如何知道tcp服务器是否处于侦听状态

时间:2012-06-23 06:31:44

标签: c# sockets

我正在使用c#在Windows服务中使用tcp listener开发一个tcp服务器应用程序。

启动我的服务后,它可以正常工作并接受新客户。在新客户端尝试连接到服务器的一段时间后,它会出现以下异常:

  

连接失败,服务器是否正在运行?无法建立联系   因为目标机器主动拒绝它。

此时服务仅处于运行状态。

如何验证tcp服务器是否处于侦听状态?

4 个答案:

答案 0 :(得分:1)

netstat -ab

此命令将为您提供有关程序名称的所有活动连接的信息。

Mark Russinovich的另一个选择是TcpView

答案 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以及服务器如何响应。