我正在使用c#在Windows服务中使用tcp listener开发一个tcp服务器应用程序。
启动我的服务后,它可以正常工作并接受新客户。在新客户端尝试连接到服务器的一段时间后,它会出现以下异常:
连接失败,服务器是否正在运行?无法建立联系 因为目标机器主动拒绝它。
此时服务仅处于运行状态。
如何验证tcp服务器是否处于侦听状态?
答案 0 :(得分:1)
答案 1 :(得分:1)
如果您的服务器仍在运行且尚未关闭侦听套接字,则它仍处于侦听状态。但是,如果平台是Windows并且服务器的积压队列已满,则Windows将拒绝进一步连接。这意味着您的服务器接受新连接的速度很慢。
答案 2 :(得分:0)
不确定您是否以编程方式表示,但对于后者,您可以尝试使用telnet:telnet主机端口
telnet yahoo.com 80
telnet localhost 3306
等
答案 3 :(得分:0)
如果你想检查服务器是否在监听,服务器是Windows,你只需使用(例如8888是你的监听端口)
netstat -ano|findstr "8888"
然后您将看到服务器实例的PID。
此外,如果要检查TCP连接尝试失败的原因,可以使用Wireshark捕获服务器和服务器之间的所有TCP数据包。客户,那么原因会很清楚。
E.g。如果服务器已达到打开套接字号的限制,您将看到从客户端到服务器的SIN以及服务器如何响应。