我在 Windows Server 2008 上运行 Java Socket Server 。
当使用多线程客户端同时发送多个 TCP 连接时,客户端始终会拒绝<#34; Errno 111连接&#34 ;建立第一个连接后出错。
这里有 Wireshark (10.1.3.136是服务器,10.34.10.132是客户端)的捕获跟踪:Trace,特定的红色跟踪在此处:{ {3}}
那么,问题是什么?
如果我延迟启动线程超过5毫秒,或使用centos作为服务器,则错误消失。服务器跟踪文件中没有发现异常。
答案 0 :(得分:0)
问题是你已经填满了积压队列,因此Windows开始向进一步的传入连接请求发出重置。
这可能是因为您指定了一个小的积压值,但更可能的原因是您的服务器根本不能足够快地接受连接:您的接受循环正在摆弄其他事情,例如DNS调用甚至I / O与客户端,所有这些都应该在客户端的线程中完成。所有接受循环都应该接受套接字并启动线程。