【发布时间】:2014-03-28 18:36:37
【问题描述】:
所以,我不确定问题出在哪里,但我正在尝试用 Java 创建一个简单的服务器,但是每当客户端连接时(我一直通过 Google Chrome 的 localhost 请求进行连接)一个客户端连接将连接多次。 (即,每次我通过浏览器连接到服务器时,服务器都会打印“用户连接成功”2-5 次。)我不确定主线程如何可能回到循环顶部并连接到同一个客户不止一次。
...
ServerSocket ss = new ServerSocket(9876);
while(true)
{
Socket s = ss.accept();
if(count >= queuesize || count >= numproducers)
{
System.out.println("Thread pool has reached it's limit. User access denied.");
//....
//error message sent to user here
//....
}
else
{
System.out.println("User connected successfully");
for(int x=0;x<numproducers;x++)
{
if(threads.get(position).isAvailable())
{
threads.get(x).start(s);
position = (position+1) % numproducers;
break;
}
position = (position+1) % numproducers;
}
}
}
【问题讨论】:
-
如果您自己制作客户端,或者使用 Telnet 会发生这种情况吗?
-
您是否考虑过 Chrome 可能会多次连接? (如果您使用的是 Linux,请使用 lsof 查看打开的连接。)
-
也请分享客户端代码。
-
@MarkW 我只是在使用来自网络浏览器的请求。它似乎确实是某种http问题。使用 telnet 时,它只连接一次,但使用任何 Web 浏览器时,它会发送多个 GET 请求(我的服务器使用的是 http 请求)。有没有办法阻止服务器从同一个客户端接受多个 GET?
-
@vanza 我只是在使用来自网络浏览器的请求。它似乎确实是某种http问题。使用 telnet 时,它只连接一次,但使用任何 Web 浏览器时,它会发送多个 GET 请求(我的服务器使用的是 http 请求)。有没有办法阻止服务器从同一个客户端接受多个 GET?
标签: java sockets serversocket