当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:16:00  来源:本站整理

用JAVA编写Web服务器[Java编程]

赞助商链接



  本文“用JAVA编写Web服务器[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

//WebServer.java 用JAVA编写Web服务器
import java.io.*;
import java.net.*;
public class WebServer
{
  public static void main(String args[])
   {
   int i=1, PORT=8080;
   ServerSocket server=null;
   Socket client=null;
   try
    {
    server=new ServerSocket(PORT);
    System.out.println("Web Server is listening on port "+server.getLocalPort());
    for (;;)
     {
     client=server.accept(); //承受客户机的衔接恳求
     new ConnectionThread(client,i).start();
     i++;
     }
    }
   catch (Exception e) {System.out.println(e);}
   }
}
/* ConnnectionThread类完成与一个Web浏览器的通信 */
class ConnectionThread extends Thread
{
  Socket client; //衔接Web浏览器的socket字
  int counter; //计数器
  public ConnectionThread(Socket cl,int c)
   {
   client=cl;
   counter=c;
   }
  public void run()  //线程体
   {
   try
    {
    String destIP=client.getInetAddress().toString(); //客户机IP地址
    int destport=client.getPort();          //客户机端口号
    System.out.println("Connection "+counter+":connected to "+destIP+" on port "+destport+".");
    PrintStream outstream=new PrintStream(client.getOutputStream());
    DataInputStream instream=new DataInputStream(client.getInputStream());
    String inline=instream.readLine(); //读取Web浏览器提交的恳求信息
    System.out.println("Received:"+inline);
    if (getrequest(inline))
     {   //假如是GET恳求
     String filename=getfilename(inline);
     File file=new File(filename);
     if (file.exists())
      { //若文件存在,则将文件送给Web浏览器
      System.out.println(filename+" requested.");
      outstream.println("HTTP/1.0 200 OK");
      outstream.println("MIME_version:1.0");
      outstream.println("Content_Type:text/html");
      int len=(int)file.length();
      outstream.println("Content_Length:"+len);
      outstream.println("");
      sendfile(outstream,file); //发送文件
      outstream.flush();
      }
     else
      { //文件不存在时
      String msg1="<html><head><title>Not Found</title></head><body><h1>Error 404-file not found</h1></body></html>";
      outstream.println("HTTP/1.0 404 no found");
      outstream.println("Content_Type:text/html");
      outstream.println("Content_Length:"+msg1.length()+2);
      outstream.println("");
      outstream.println(msg1);
      outstream.flush();
      }
     }
    //instream.close();
    //outstream.close();
    long m1=1;  //延时
    while (m1<11100000) {m1++;}
    client.close();
    }
   catch (IOException e)
    {
    System.out.println("Exception:"+e);
    }
}
/* 获得恳求范例能否为“GET” */
boolean getrequest(String s)
{
  if (s.length()>0)
   {
   if (s.substring(0,3).equalsIgnoreCase("GET")) return true;
   }
  return false;
}
/* 获得要拜候的文件名 */
String getfilename(String s)
{
String f=s.substring(s.indexOf(' ')+1);
f=f.substring(0,f.indexOf(' '));
try
  {
  if (f.charAt(0)=='/')
   f=f.substring(1);
  }
catch (StringIndexOutOfBoundsException e)
  {
  System.out.println("Exception:"+e);
  }
if (f.equals("")) f="index.html";
return f;
}
/*把指定文件发送给Web浏览器 */
void sendfile(PrintStream outs,File file)
{
try
  {
  DataInputStream in=new DataInputStream(new FileInputStream(file));
  int len=(int)file.length();
  byte buf[]=new byte[len];
  in.readFully(buf);
  outs.write(buf,0,len);
  /*
  DataOutputStream ou=new DataOutputStream(System.out);
  ou.write(buf,0,len);
  */
  outs.flush();
  in.close();
  }
catch (Exception e)
  {
  System.out.println("Error retrieving file.");
  System.exit(1);
  }
}


  以上是“用JAVA编写Web服务器[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Javascript实现网页水印(非图片水印)
  • <b>如安在Oracle中利用Java存储历程</b>
  • 用Java实现自动在数据库表中生成ID号
  • 利用javascript获得浏览器中的星号密码办法
  • 用javabean来实现MySQL的分页显示
  • 用Java 1.1 AWT制作窗口和程序片
  • 用Java ME举行无线消息传送
  • <b>用Java筹划COM服务器</b>
  • 用Java筹划COM客户
  • <b>用Java程序生成文本的捷径</b>
  • 用Java实现FTP服务器办理策划
  • 用Java实现多线程服务器程序
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .