- 浏览: 47752 次
- 性别:
- 来自: 合肥
文章分类
- package test41;
- import java.io.*;
- /**
- * Title: 运行系统命令
- * Description:运行一个系统的命令,演示使用Runtime类。
- * Filename: CmdExec.java
- */
- public class CmdExec {
- /**
- *方法说明:构造器,运行系统命令
- *输入参数:String cmdline 命令字符
- *返回类型:
- */
- public CmdExec(String cmdline) {
- try {
- String line;
- //运行系统命令
- Process p = Runtime.getRuntime().exec(cmdline);
- //使用缓存输入流获取屏幕输出。
- BufferedReader input =
- new BufferedReader
- (new InputStreamReader(p.getInputStream()));
- //读取屏幕输出
- while ((line = input.readLine()) != null) {
- System.out.println("java print:"+line);
- }
- //关闭输入流
- input.close();
- }
- catch (Exception err) {
- err.printStackTrace();
- }
- }
- /**
- *方法说明:主方法
- *输入参数:
- *返回类型:
- */
- public static void main(String argv[]) {
- new CmdExec("myprog.bat");
- }
- }
- package test43;
- import java.io.*;
- import java.net.*;
- /**
- * Title: 简单服务器客户端
- * Description: 本程序是一个简单的客户端,用来和服务器连接
- * Filename: SampleClient.java
- */
- public class SampleClient {
- public static void main(String[] arges) {
- try {
- // 获取一个IP。null表示本机
- InetAddress addr = InetAddress.getByName(null);
- // 打开8888端口,与服务器建立连接
- Socket sk = new Socket(addr, 8888);
- // 缓存输入
- BufferedReader in = new BufferedReader(new InputStreamReader(sk
- .getInputStream()));
- // 缓存输出
- PrintWriter out = new PrintWriter(new BufferedWriter(
- new OutputStreamWriter(sk.getOutputStream())), true);
- // 向服务器发送信息
- out.println("你好!");
- // 接收服务器信息
- System.out.println(in.readLine());
- } catch (Exception e) {
- System.out.println(e);
- }
- }
- }
- package test43;
- import java.net.*;
- import java.io.*;
- /**
- * Title: 简单服务器服务端
- * Description: 这是一个简单的服务器端程序
- * Filename: SampleServer.java
- */
- public class SampleServer {
- public static void main(String[] arges) {
- try {
- int port = 8888;
- // 使用8888端口创建一个ServerSocket
- ServerSocket mySocket = new ServerSocket(port);
- // 等待监听是否有客户端连接
- Socket sk = mySocket.accept();
- // 输入缓存
- BufferedReader in = new BufferedReader(new InputStreamReader(sk
- .getInputStream()));
- // 输出缓存
- PrintWriter out = new PrintWriter(new BufferedWriter(
- new OutputStreamWriter(sk.getOutputStream())), true);
- // 打印接收到的客户端发送过来的信息
- System.out.println("客户端信息:" + in.readLine());
- // 向客户端回信息
- out.println("你好,我是服务器。我使用的端口号: " + port);
- } catch (Exception e) {
- System.out.println(e);
- }
- }
- }
- package test44;
- // 文件名:moreServer.java
- import java.io.*;
- import java.net.*;
- /**
- * Title: 多线程服务器
- * Description: 本实例使用多线程实现多服务功能。
- * Filename:
- */
- class moreServer
- {
- public static void main (String [] args) throws IOException
- {
- System.out.println ("Server starting...\n");
- //使用8000端口提供服务
- ServerSocket server = new ServerSocket (8000);
- while (true)
- {
- //阻塞,直到有客户连接
- Socket sk = server.accept ();
- System.out.println ("Accepting Connection...\n");
- //启动服务线程
- new ServerThread (sk).start ();
- }
- }
- }
- //使用线程,为多个客户端服务
- class ServerThread extends Thread
- {
- private Socket sk;
- ServerThread (Socket sk)
- {
- this.sk = sk;
- }
- //线程运行实体
- public void run ()
- {
- BufferedReader in = null;
- PrintWriter out = null;
- try{
- InputStreamReader isr;
- isr = new InputStreamReader (sk.getInputStream ());
- in = new BufferedReader (isr);
- out = new PrintWriter (
- new BufferedWriter(
- new OutputStreamWriter(
- sk.getOutputStream ())), true);
- while(true){
- //接收来自客户端的请求,根据不同的命令返回不同的信息。
- String cmd = in.readLine ();
- System.out.println(cmd);
- if (cmd == null)
- break;
- cmd = cmd.toUpperCase ();
- if (cmd.startsWith ("BYE")){
- out.println ("BYE");
- break;
- }else{
- out.println ("你好,我是服务器!");
- }
- }
- }catch (IOException e)
- {
- System.out.println (e.toString ());
- }
- finally
- {
- System.out.println ("Closing Connection...\n");
- //最后释放资源
- try{
- if (in != null)
- in.close ();
- if (out != null)
- out.close ();
- if (sk != null)
- sk.close ();
- }
- catch (IOException e)
- {
- System.out.println("close err"+e);
- }
- }
- }
- }
- package test44;
- //文件名:SocketClient.java
- import java.io.*;
- import java.net.*;
- class SocketThreadClient extends Thread {
- public static int count = 0;
- // 构造器,实现服务
- public SocketThreadClient(InetAddress addr) {
- count++;
- BufferedReader in = null;
- PrintWriter out = null;
- Socket sk = null;
- try {
- // 使用8000端口
- sk = new Socket(addr, 8000);
- InputStreamReader isr;
- isr = new InputStreamReader(sk.getInputStream());
- in = new BufferedReader(isr);
- // 建立输出
- out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(sk
- .getOutputStream())), true);
- // 向服务器发送请求
- System.out.println("count:" + count);
- out.println("Hello");
- System.out.println(in.readLine());
- out.println("BYE");
- System.out.println(in.readLine());
- } catch (IOException e) {
- System.out.println(e.toString());
- } finally {
- out.println("END");
- // 释放资源
- try {
- if (in != null)
- in.close();
- if (out != null)
- out.close();
- if (sk != null)
- sk.close();
- } catch (IOException e) {
- }
- }
- }
- }
- // 客户端
- public class SocketClient {
- @SuppressWarnings("static-access")
- public static void main(String[] args) throws IOException,
- InterruptedException {
- InetAddress addr = InetAddress.getByName(null);
- for (int i = 0; i < 10; i++)
- new SocketThreadClient(addr);
- Thread.currentThread().sleep(1000);
- }
- }
- package test45;
- import java.net.*;
- import java.io.*;
- /**
- * Title: 使用SMTP发送邮件
- * Description: 本实例通过使用socket方式,根据SMTP协议发送邮件
- * Copyright: Copyright (c) 2003
- * Filename: sendSMTPMail.java
- */
- public class sendSMTPMail {
- /**
- *方法说明:主方法
- *输入参数:1。服务器ip;2。对方邮件地址
- *返回类型:
- */
- public static void main(String[] arges) {
- if (arges.length != 2) {
- System.out.println("use java sendSMTPMail hostname | mail to");
- return;
- }
- sendSMTPMail t = new sendSMTPMail();
- t.sendMail(arges[0], arges[1]);
- }
- /**
- *方法说明:发送邮件
- *输入参数:String mailServer 邮件接收服务器
- *输入参数:String recipient 接收邮件的地址
- *返回类型:
- */
- public void sendMail(String mailServer, String recipient) {
- try {
- // 有Socket打开25端口
- Socket s = new Socket(mailServer, 25);
- // 缓存输入和输出
- BufferedReader in = new BufferedReader(new InputStreamReader(s
- .getInputStream(), "8859_1"));
- BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s
- .getOutputStream(), "8859_1"));
- // 发出“HELO”命令,表示对服务器的问候
- send(in, out, "HELO theWorld");
- // 告诉服务器我的邮件地址,有些服务器要校验这个地址
- send(in, out, "MAIL FROM: <213@qq.com>");
- // 使用“RCPT TO”命令告诉服务器解释邮件的邮件地址
- send(in, out, "RCPT TO: " + recipient);
- // 发送一个“DATA”表示下面将是邮件主体
- send(in, out, "DATA");
- // 使用Subject命令标注邮件主题
- send(out, "Subject: 这是一个测试程序!");
- // 使用“From”标注邮件的来源
- send(out, "From: riverwind <213@qq.com>");
- send(out, "\n");
- // 邮件主体
- send(out, "这是一个使用SMTP协议发送的邮件!如果打扰请删除!");
- send(out, "\n.\n");
- // 发送“QUIT”端口邮件的通讯
- send(in, out, "QUIT");
- s.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- *方法说明:发送信息,并接收回信
- *输入参数:
- *返回类型:
- */
- public void send(BufferedReader in, BufferedWriter out, String s) {
- try {
- out.write(s + "\n");
- out.flush();
- System.out.println(s);
- s = in.readLine();
- System.out.println(s);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- *方法说明:重载方法。向socket写入信息
- *输入参数:BufferedWriter out 输出缓冲器
- *输入参数:String s 写入的信息
- *返回类型:
- */
- public void send(BufferedWriter out, String s) {
- try {
- out.write(s + "\n");
- out.flush();
- System.out.println(s);
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- package test46;
- import java.io.*;
- import java.net.*;
- /**
- * Title: SMTP协议接收邮件
- * Description: 通过Socket连接POP3服务器,使用SMTP协议接收邮件服务器中的邮件
- * Filename:
- */
- class POP3Demo
- {
- /**
- *方法说明:主方法,接收用户输入
- *输入参数:
- *返回类型:
- */
- @SuppressWarnings("static-access")
- public static void main(String[] args){
- if(args.length!=3){
- System.out.println("USE: java POP3Demo mailhost user password");
- }
- new POP3Demo().receive(args[0],args[1],args[2]);
- }
- /**
- *方法说明:接收邮件
- *输入参数:String popServer 服务器地址
- *输入参数:String popUser 邮箱用户名
- *输入参数:String popPassword 邮箱密码
- *返回类型:
- */
- public static void receive (String popServer, String popUser, String popPassword)
- {
- String POP3Server = popServer;
- int POP3Port = 110;
- Socket client = null;
- try
- {
- // 创建一个连接到POP3服务程序的套接字。
- client = new Socket (POP3Server, POP3Port);
- //创建一个BufferedReader对象,以便从套接字读取输出。
- InputStream is = client.getInputStream ();
- BufferedReader sockin;
- sockin = new BufferedReader (new InputStreamReader (is));
- //创建一个PrintWriter对象,以便向套接字写入内容。
- OutputStream os = client.getOutputStream ();
- PrintWriter sockout;
- sockout = new PrintWriter (os, true); // true for auto-flush
- // 显示POP3握手信息。
- System.out.println ("S:" + sockin.readLine ());
- /*-- 与POP3服务器握手过程 --*/
- System.out.print ("C:");
- String cmd = "user "+popUser;
- // 将用户名发送到POP3服务程序。
- System.out.println (cmd);
- sockout.println (cmd);
- // 读取POP3服务程序的回应消息。
- String reply = sockin.readLine ();
- System.out.println ("S:" + reply);
- System.out.print ("C:");
- cmd = "pass ";
- // 将密码发送到POP3服务程序。
- System.out.println(cmd+"*********");
- sockout.println (cmd+popPassword);
- // 读取POP3服务程序的回应消息。
- reply = sockin.readLine ();
- System.out.println ("S:" + reply);
- System.out.print ("C:");
- cmd = "stat";
- // 获取邮件数据。
- System.out.println(cmd);
- sockout.println (cmd);
- // 读取POP3服务程序的回应消息。
- reply = sockin.readLine ();
- System.out.println ("S:" + reply);
- if(reply==null) return;
- System.out.print ("C:");
- cmd = "retr 1";
- // 将接收第一丰邮件命令发送到POP3服务程序。
- System.out.println(cmd);
- sockout.println (cmd);
- // 输入了RETR命令并且返回了成功的回应码,持续从套接字读取输出,
- // 直到遇到<CRLF>.<CRLF>。这时从套接字读出的输出就是邮件的内容。
- if (cmd.toLowerCase ().startsWith ("retr") &&
- reply.charAt (0) == '+')
- do
- {
- reply = sockin.readLine ();
- System.out.println ("S:" + reply);
- if (reply != null && reply.length () > 0)
- if (reply.charAt (0) == '.')
- break;
- }
- while (true);
- cmd = "quit";
- // 将命令发送到POP3服务程序。
- System.out.print (cmd);
- sockout.println (cmd);
- }
- catch (IOException e)
- {
- System.out.println (e.toString ());
- }
- finally
- {
- try
- { if (client != null)
- client.close ();
- }
- catch (IOException e)
- {
- }
- }
- }
- }
- package test47;
- import java.util.*;
- import javax.mail.*;
- import javax.mail.internet.*;
- import javax.activation.*;
- /**
- * Title: 使用javamail发送邮件 Description: 演示如何使用javamail包发送电子邮件。这个实例可发送多附件 Filename:
- * Mail.java
- */
- public class Mail {
- String to = "";// 收件人
- String from = "";// 发件人
- String host = "";// smtp主机
- String username = "";
- String password = "";
- String filename = "";// 附件文件名
- String subject = "";// 邮件主题
- String content = "";// 邮件正文
- @SuppressWarnings("unchecked")
- Vector file = new Vector();// 附件文件集合
- /**
- *方法说明:默认构造器 输入参数: 返回类型:
- */
- public Mail() {
- }
- /**
- *方法说明:构造器,提供直接的参数传入 输入参数: 返回类型:
- */
- public Mail(String to, String from, String smtpServer, String username,
- String password, String subject, String content) {
- this.to = to;
- this.from = from;
- this.host = smtpServer;
- this.username = username;
- this.password = password;
- this.subject = subject;
- this.content = content;
- }
- /**
- *方法说明:设置邮件服务器地址 输入参数:String host 邮件服务器地址名称 返回类型:
- */
- public void setHost(String host) {
- this.host = host;
- }
- /**
- *方法说明:设置登录服务器校验密码 输入参数: 返回类型:
- */
- public void setPassWord(String pwd) {
- this.password = pwd;
- }
- /**
- *方法说明:设置登录服务器校验用户 输入参数: 返回类型:
- */
- public void setUserName(String usn) {
- this.username = usn;
- }
- /**
- *方法说明:设置邮件发送目的邮箱 输入参数: 返回类型:
- */
- public void setTo(String to) {
- this.to = to;
- }
- /**
- *方法说明:设置邮件发送源邮箱 输入参数: 返回类型:
- */
- public void setFrom(String from) {
- this.from = from;
- }
- /**
- *方法说明:设置邮件主题 输入参数: 返回类型:
- */
- public void setSubject(String subject) {
- this.subject = subject;
- }
- /**
- *方法说明:设置邮件内容 输入参数: 返回类型:
- */
- public void setContent(String content) {
- this.content = content;
- }
- /**
- *方法说明:把主题转换为中文 输入参数:String strText 返回类型:
- */
- public String transferChinese(String strText) {
- try {
- strText = MimeUtility.encodeText(new String(strText.getBytes(),
- "GB2312"), "GB2312", "B");
- } catch (Exception e) {
- e.printStackTrace();
- }
- return strText;
- }
- /**
- *方法说明:往附件组合中添加附件 输入参数: 返回类型:
- */
- public void attachfile(String fname) {
- file.addElement(fname);
- }
- /**
- *方法说明:发送邮件 输入参数: 返回类型:boolean 成功为true,反之为false
- */
- public boolean sendMail() {
- // 构造mail session
- Properties props = System.getProperties();
- props.put("mail.smtp.host", host);
- props.put("mail.smtp.auth", "true");
- Session session = Session.getDefaultInstance(props,
- new Authenticator() {
- public PasswordAuthentication getPasswordAuthentication() {
- return new PasswordAuthentication(username, password);
- }
- });
- try {
- // 构造MimeMessage 并设定基本的值
- MimeMessage msg = new MimeMessage(session);
- msg.setFrom(new InternetAddress(from));
- InternetAddress[] address = { new InternetAddress(to) };
- msg.setRecipients(Message.RecipientType.TO, address);
- subject = transferChinese(subject);
- msg.setSubject(subject);
- // 构造Multipart
- Multipart mp = new MimeMultipart();
- // 向Multipart添加正文
- MimeBodyPart mbpContent = new MimeBodyPart();
- mbpContent.setText(content);
- // 向MimeMessage添加(Multipart代表正文)
- mp.addBodyPart(mbpContent);
- // 向Multipart添加附件
- Enumeration efile = file.elements();
- while (efile.hasMoreElements()) {
- MimeBodyPart mbpFile = new MimeBodyPart();
- filename = efile.nextElement().toString();
- FileDataSource fds = new FileDataSource(filename);
- mbpFile.setDataHandler(new DataHandler(fds));
- mbpFile.setFileName(fds.getName());
- // 向MimeMessage添加(Multipart代表附件)
- mp.addBodyPart(mbpFile);
- }
- file.removeAllElements();
- // 向Multipart添加MimeMessage
- msg.setContent(mp);
- msg.setSentDate(new Date());
- // 发送邮件
- Transport.send(msg);
- } catch (MessagingException mex) {
- mex.printStackTrace();
- Exception ex = null;
- if ((ex = mex.getNextException()) != null) {
- ex.printStackTrace();
- }
- return false;
- }
- return true;
- }
- /**
- *方法说明:主方法,用于测试 输入参数: 返回类型:
- */
- public static void main(String[] args) {
- Mail sendmail = new Mail();
- sendmail.setHost("smtp.sohu.com");
- sendmail.setUserName("du_jiang");
- sendmail.setPassWord("31415926");
- sendmail.setTo("dujiang@sricnet.com");
- sendmail.setFrom("du_jiang@sohu.com");
- sendmail.setSubject("你好,这是测试!");
- sendmail.setContent("你好这是一个带多附件的测试!");
- // Mail sendmail = new
- // Mail("dujiang@sricnet.com","du_jiang@sohu.com","smtp.sohu.com","du_jiang","31415926","你好","胃,你好吗?");
- sendmail.attachfile("c:\\test.txt");
- sendmail.attachfile("DND.jar");
- sendmail.sendMail();
- }
- }// end
- package test48;
- import javax.mail.*;
- import javax.mail.internet.*;
- import java.util.*;
- import java.io.*;
- /**
- * Title: 使用JavaMail接收邮件
- * Description: 实例JavaMail包接收邮件,本实例没有实现接收邮件的附件。
- * Filename: POPMail.java
- */
- public class POPMail{
- /**
- *方法说明:主方法,接收用户输入的邮箱服务器、用户名和密码
- *输入参数:
- *返回类型:
- */
- public static void main(String args[]){
- try{
- String popServer=args[0];
- String popUser=args[1];
- String popPassword=args[2];
- receive(popServer, popUser, popPassword);
- }catch (Exception ex){
- System.out.println("Usage: java com.lotontech.mail.POPMail"+" popServer popUser popPassword");
- }
- System.exit(0);
- }
- /**
- *方法说明:接收邮件信息
- *输入参数:
- *返回类型:
- */
- public static void receive(String popServer, String popUser, String popPassword){
- Store store=null;
- Folder folder=null;
- try{
- //获取默认会话
- Properties props = System.getProperties();
- Session session = Session.getDefaultInstance(props, null);
- //使用POP3会话机制,连接服务器
- store = session.getStore("pop3");
- store.connect(popServer, popUser, popPassword);
- //获取默认文件夹
- folder = store.getDefaultFolder();
- if (folder == null) throw new Exception("No default folder");
- //如果是收件箱
- folder = folder.getFolder("INBOX");
- if (folder == null) throw new Exception("No POP3 INBOX");
- //使用只读方式打开收件箱
- folder.open(Folder.READ_ONLY);
- //得到文件夹信息,获取邮件列表
- Message[] msgs = folder.getMessages();
- for (int msgNum = 0; msgNum < msgs.length; msgNum++){
- printMessage(msgs[msgNum]);
- }
- }catch (Exception ex){
- ex.printStackTrace();
- }
- finally{
- //释放资源
- try{
- if (folder!=null) folder.close(false);
- if (store!=null) store.close();
- }catch (Exception ex2) {
- ex2.printStackTrace();
- }
- }
- }
- /**
- *方法说明:打印邮件信息
- *输入参数:Message message 信息对象
- *返回类型:
- */
- public static void printMessage(Message message){
- try{
- //获得发送邮件地址
- String from=((InternetAddress)message.getFrom()[0]).getPersonal();
- if (from==null) from=((InternetAddress)message.getFrom()[0]).getAddress();
- System.out.println("FROM: "+from);
- //获取主题
- String subject=message.getSubject();
- System.out.println("SUBJECT: "+subject);
- //获取信息对象
- Part messagePart=message;
- Object content=messagePart.getContent();
- //附件
- if (content instanceof Multipart){
- messagePart=((Multipart)content).getBodyPart(0);
- System.out.println("[ Multipart Message ]");
- }
- //获取content类型
- String contentType=messagePart.getContentType();
- //如果邮件内容是纯文本或者是HTML,那么打印出信息
- System.out.println("CONTENT:"+contentType);
- if (contentType.startsWith("text/plain")||
- contentType.startsWith("text/html")){
- InputStream is = messagePart.getInputStream();
- BufferedReader reader=new BufferedReader(new InputStreamReader(is));
- String thisLine=reader.readLine();
- while (thisLine!=null){
- System.out.println(thisLine);
- thisLine=reader.readLine();
- }
- }
- System.out.println("-------------- END ---------------");
- }catch (Exception ex){
- ex.printStackTrace();
- }
- }
- }
- package test49;
- import java.io.*;
- import java.net.*;
- /**
- * Title: 获取一个URL文本
- * Description: 通过使用URL类,构造一个输入对象,并读取其内容。
- * Filename: getURL.java
- */
- public class getURL{
- public static void main(String[] arg){
- if(arg.length!=1){
- System.out.println("USE java getURL url");
- return;
- }
- new getURL(arg[0]);
- }
- /**
- *方法说明:构造器
- *输入参数:String URL 互联网的网页地址。
- *返回类型:
- */
- public getURL(String URL){
- try {
- //创建一个URL对象
- URL url = new URL(URL);
- //读取从服务器返回的所有文本
- BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
- String str;
- while ((str = in.readLine()) != null) {
- //这里对文本出来
- display(str);
- }
- in.close();
- } catch (MalformedURLException e) {
- } catch (IOException e) {
- }
- }
- /**
- *方法说明:显示信息
- *输入参数:
- *返回类型:
- */
- private void display(String s){
- if(s!=null)
- System.out.println(s);
- }
- }
- package test50;
- import java.io.*;
- /**
- * Title: 客户请求分析
- * Description: 获取客户的HTTP请求,分析客户所需要的文件
- * Filename: Request.java
- */
- public class Request{
- InputStream in = null;
- /**
- *方法说明:构造器,获得输入流。这时客户的请求数据。
- *输入参数:
- *返回类型:
- */
- public Request(InputStream input){
- this.in = input;
- }
- /**
- *方法说明:解析客户的请求
- *输入参数:
- *返回类型:String 请求文件字符
- */
- public String parse() {
- //从Socket读取一组数据
- StringBuffer requestStr = new StringBuffer(2048);
- int i;
- byte[] buffer = new byte[2048];
- try {
- i = in.read(buffer);
- }
- catch (IOException e) {
- e.printStackTrace();
- i = -1;
- }
- for (int j=0; j<i; j++) {
- requestStr.append((char) buffer[j]);
- }
- System.out.print(requestStr.toString());
- return getUri(requestStr.toString());
- }
- /**
- *方法说明:获取URI字符
- *输入参数:String requestString 请求字符
- *返回类型:String URI信息字符
- */
- private String getUri(String requestString) {
- int index1, index2;
- index1 = requestString.indexOf(' ');
- if (index1 != -1) {
- index2 = requestString.indexOf(' ', index1 + 1);
- if (index2 > index1)
- return requestString.substring(index1 + 1, index2);
- }
- return null;
- }
- }
- package test50;
- import java.io.*;
- /**
- * Title: 发现HTTP内容和文件内容
- * Description: 获得用户请求后将用户需要的文件读出,添加上HTTP应答头。发送给客户端。
- * Filename: Response.java
- */
- public class Response{
- OutputStream out = null;
- /**
- *方法说明:发送信息
- *输入参数:String ref 请求的文件名
- *返回类型:
- */
- @SuppressWarnings("deprecation")
- public void Send(String ref) throws IOException {
- byte[] bytes = new byte[2048];
- FileInputStream fis = null;
- try {
- //构造文件
- File file = new File(WebServer.WEBROOT, ref);
- if (file.exists()) {
- //构造输入文件流
- fis = new FileInputStream(file);
- int ch = fis.read(bytes, 0, 2048);
- //读取文件
- String sBody = new String(bytes,0);
- //构造输出信息
- String sendMessage = "HTTP/1.1 200 OK\r\n" +
- "Content-Type: text/html\r\n" +
- "Content-Length: "+ch+"\r\n" +
- "\r\n" +sBody;
- //输出文件
- out.write(sendMessage.getBytes());
- }else {
- // 找不到文件
- String errorMessage = "HTTP/1.1 404 File Not Found\r\n" +
- "Content-Type: text/html\r\n" +
- "Content-Length: 23\r\n" +
- "\r\n" +
- "<h1>File Not Found</h1>";
- out.write(errorMessage.getBytes());
- }
- }
- catch (Exception e) {
- // 如不能实例化File对象,抛出异常。
- System.out.println(e.toString() );
- }
- finally {
- if (fis != null)
- fis.close();
- }
- }
- /**
- *方法说明:构造器,获取输出流
- *输入参数:
- *返回类型:
- */
- public Response(OutputStream output) {
- this.out = output;
- }
- }
- package test50;
- import java.io.*;
- import java.net.*;
- /**
- * Title: WEB服务器
- * Description: 使用Socket创建一个WEB服务器,本程序是多线程系统以提高反应速度。
- * Filename: WebServer.java
- */
- class WebServer
- {
- public static String WEBROOT = "";//默认目录
- public static String defaultPage = "index.htm";//默认文件
- public static void main (String [] args) throws IOException
- {//使用输入的方式通知服务默认目录位置,可用./root表示。
- if(args.length!=1){
- System.out.println("USE: java WebServer ./rootdir");
- return;
- }else{
- WEBROOT = args[0];
- }
- System.out.println ("Server starting...\n");
- //使用8000端口提供服务
- ServerSocket server = new ServerSocket (8000);
- while (true)
- {
- //阻塞,直到有客户连接
- Socket sk = server.accept ();
- System.out.println ("Accepting Connection...\n");
- //启动服务线程
- new WebThread (sk).start ();
- }
- }
- }
- /**
- * Title: 服务子线程
- * Description: 使用线程,为多个客户端服务
- * Filename:
- */
- class WebThread extends Thread
- {
- private Socket sk;
- WebThread (Socket sk)
- {
- this.sk = sk;
- }
- /**
- *方法说明:线程体
- *输入参数:
- *返回类型:
- */
- public void run ()
- {
- InputStream in = null;
- OutputStream out = null;
- try{
- in = sk.getInputStream();
- out = sk.getOutputStream();
- //接收来自客户端的请求。
- Request rq = new Request(in);
- //解析客户请求
- String sURL = rq.parse();
- System.out.println("sURL="+sURL);
- if(sURL.equals("/")) sURL = WebServer.defaultPage;
- Response rp = new Response(out);
- rp.Send(sURL);
- }catch (IOException e)
- {
- System.out.println (e.toString ());
- }
- finally
- {
- System.out.println ("Closing Connection...\n");
- //最后释放资源
- try{
- if (in != null)
- in.close ();
- if (out != null)
- out.close ();
- if (sk != null)
- sk.close ();
- }
- catch (IOException e)
- {
- }
- }
- }
- }
发表评论
-
java equals重写
2013-01-09 15:03 7211.何时需要重写equals() 当一个类有自 ... -
Java 异常Exception
2013-01-09 15:00 1181Java异常处理总结 异常处 ... -
利用Java Reflect机制编写万能toString()方法
2012-12-26 09:26 1016package com.accp.test.file ... -
java ArrayList 转数组 【转】
2012-12-10 10:47 45681.List转换成为数组。(这里的List是实体是Arr ... -
java ArrayList去重复值
2012-12-10 10:19 9585方法一:循环元素删除 Java code / ... -
java读取文件
2012-12-26 09:22 843public class ReadFromFile ... -
java URL类
2012-08-04 11:53 2267package ssh.util; ... -
使用Java操作文本文件的方法详解
2012-08-04 11:09 995摘要: 最初java是不支持对文本文件的处理 ...
相关推荐
"100个Java经典例子后端- Java"这个资源显然旨在帮助开发者通过实践加深对Java的理解,尤其在后端开发领域。下面我们将深入探讨这些经典例子可能涵盖的知识点。 1. **基础语法**: 包括变量声明、数据类型(如基本...
Java 是一种广泛使用的高级编程语言,它提供了强大的功能和灵活的编程模型。本文将对 Java 编程语言的基础知识点进行总结,涵盖 Java 语言的基本概念、数据类型、变量、运算符、控制结构、数组、方法等。 1. Java ...
"java100个经典例子"提供了丰富的示例代码,帮助初学者逐步进阶。以下是对几个例子的详细解释: 1. **第一个Java程序**: 这是每个Java初学者都会遇到的第一个Hello World程序,展示了Java程序的基本结构。`public...
Java 经典算法例子,Java 经典算法例子,Java 经典算法例子,Java 经典算法例子,Java 经典算法例子,Java 经典算法例子,Java 经典算法例子,Java 经典算法例子,Java 经典算法例子,Java 经典算法例子,Java 经典...
《JAVA经典100个小案例》是一份专为初学者设计的Java编程资源,它包含了100个精心挑选的实例,旨在帮助新手快速掌握Java编程的基础知识。这些案例覆盖了Java语言的核心概念,包括数据类型、控制结构、类与对象、数组...
"164个java经典代码案例"提供了丰富的实践资源,帮助开发者深入理解和掌握Java编程的核心概念和技术。这些案例覆盖了从基础语法到高级特性的各种应用场景,是提升编程技能和解决实际问题的宝贵资料。 首先,基础...
这个“Java语言十大经典案例”涵盖了Java的核心特性,包括文件与流、多线程、网络编程以及异常处理等重要概念。以下是对这些知识点的详细说明: 1. **文件与流**: 文件操作是程序处理数据的基本方式。Java提供了...
"140个Java经典案例"这个压缩包文件显然是一份丰富的学习资源,旨在帮助初学者和有经验的开发者深入理解和掌握Java编程。下面将根据标题、描述以及标签来解析这些知识点。 1. **基础概念**: - 类与对象:Java的...
100个Java经典编程实例源代码100个Java经典编程实例源代码100个Java经典编程实例源代码100个Java经典编程实例源代码100个Java经典编程实例源代码100个Java经典编程实例源代码
这个名为“java经典10个例子”的压缩包很可能包含了十个能够帮助初学者和有经验的开发者更好地理解和运用Java语言的关键示例。以下是这十个例子可能涵盖的知识点: 1. **Hello, World!** - 这是每个编程语言的入门...
在“Java经典案例”这个资源中,我们很可能会找到一系列针对初学者和高级开发者的学习材料,帮助他们理解和应用Java语言的各种特性。这些案例可能涵盖了从基础语法到复杂的设计模式,涉及了Java开发的多个方面。 ...
Java作为世界上最流行的编程语言之一,拥有众多的经典案例,这些案例不仅展示了Java的强大功能,也帮助开发者深入理解其核心概念和编程技巧。以下是对"Java十大经典案例"的详细解析: 1. **银行账户管理系统**:这...
Java教程中的100个经典案例源代码涵盖了Java编程的多个重要方面,是学习和提升Java技能的宝贵资源。这些案例旨在帮助初学者巩固基础知识,同时也为有经验的开发者提供实战参考。以下将对这些案例可能涉及的知识点...
在Java编程语言的世界里,经典的案例是学习和理解其核心概念、设计模式和最佳实践的重要途径。这些案例不仅有助于新手入门,也能让有经验的开发者深入挖掘Java的潜力。以下是一些Java中的十大经典案例,它们涵盖了...
【标题】"120套java经典案例库"揭示了这个资源包的主旨,它包含了一百二十个Java编程的经典实例,旨在帮助开发者通过实践学习和掌握Java编程技术。这些案例可能涵盖了各种Java应用领域,从基础语法到高级特性,为...
Java作为一门广泛使用的编程语言,其经典案例是学习者深入理解和掌握Java技术的重要途径。"Java十大经典案例"涵盖了Java的基础知识,对于初学者来说,这些案例提供了丰富的实践机会,帮助他们将理论知识转化为实际...