我有一个非常基本的多线程Web服务器的启动,它可以接收所有的GET请求,只要它们一次只有一个。Java多线程Web服务器 - 没有收到多个GET请求
但是,当多个GET请求同时进入时,有时它们都会被接收,而其他时间会有一些丢失。
我通过创建一个带有多个图像标签指向我的web服务器并在Firefox中打开页面的html页面来测试此项。我总是使用shift +刷新。
这是我的代码,我必须做一些根本性的错误。
public final class WebServer
{
public static void main(String argv[]) throws Exception
{
int port = 6789;
ServerSocket serverSocket = null;
try
{
serverSocket = new ServerSocket(port);
}
catch(IOException e)
{
System.err.println("Could not listen on port: " + port);
System.exit(1);
}
while(true)
{
try
{
Socket clientSocket = serverSocket.accept();
new Thread(new ServerThread(clientSocket)).start();
}
catch(IOException e)
{
}
}
}
}
public class ServerThread implements Runnable
{
static Socket clientSocket = null;
public ServerThread(Socket clientSocket)
{
this.clientSocket = clientSocket;
}
public void run()
{
String headerline = null;
DataOutputStream out = null;
BufferedReader in = null;
int i;
try
{
out = new DataOutputStream(clientSocket.getOutputStream());
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
while((headerline = in.readLine()).length() != 0)
{
System.out.println(headerline);
}
}
catch(Exception e)
{
}
}
你可以从注意你的例外开始,而不是忽略它们。他们在那里是有原因的;听他们,你的答案可能在那里。 – skaffman 2011-02-05 22:35:39