RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:9:30-18:00
你可能遇到了下面的问题
关闭右侧工具栏
最简单的Http服务器之java版
  • 作者:zhaozj
  • 发表时间:2020-12-23 10:35
  • 来源:未知

只支持单线程,只能接收一个请求

我想加以改进,让它可以接收多个请求

注释我就不加了

可以参考用winsock版,好像java的更简单

?

import java.io.*;import java.net.*;import java.util.*;

public class WebServer{? public static void main(String []args)throws Exception{??? String requestMessageLine;??? String fileName;??? ServerSocket listenSocket=new ServerSocket(80);??? Socket connectSocket=listenSocket.accept();??? BufferedReader inFormClient=new BufferedReader(new??????? InputStreamReader(connectSocket.getInputStream()));??? DataOutputStream outToClient=new??????? DataOutputStream(connectSocket.getOutputStream());??? requestMessageLine=inFormClient.readLine();??? StringTokenizer tokenizedLine=new StringTokenizer(requestMessageLine);??? if(tokenizedLine.nextToken().equals("GET")){????? fileName=tokenizedLine.nextToken();????? if(fileName.startsWith("/")==true){??????? fileName=fileName.substring(1);????? }????? String filePath=new String("D://Java//httpserver//classes//");????? File file=new File(filePath+ fileName);????? int numOfBytes=(int)file.length();????? FileInputStream inFile=new FileInputStream(filePath+fileName);????? byte []fileInBytes=new byte[numOfBytes];????? inFile.read(fileInBytes);????? outToClient.writeBytes("HTTP/1.0 200 Document Follows/r/n");????? if(fileName.endsWith(".jpg")){???????? outToClient.writeBytes("Conten-Type: image/jpeg/r/n");????? }????? else if(fileName.endsWith(".gif")){???????? outToClient.writeBytes("Conten-Type: image/gif/r/n");????? }????? outToClient.writeBytes("Content-Length: " + numOfBytes + "/r/n");????? outToClient.writeBytes("/r/n");????? outToClient.write(fileInBytes,0,numOfBytes);????? connectSocket.close();

??? }??? else{????? System.out.println("No support for other request except GET!");??? }

? }}