3

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

开始我的服务后,它工作正常并接受新客户。一段时间后,当新客户端尝试连接到服务器时,它会给出以下异常:

连接失败,服务器是否正在运行?由于目标机器主动拒绝,无法建立连接。

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

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

4

4 回答 4

1

网络统计-ab

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

另一种选择是Mark Russinovich的TcpView

于 2012-06-23T06:39:54.057 回答
1

如果您的服务器仍在运行并且尚未关闭侦听套接字,则它仍处于侦听状态。但是,如果平台是 Windows 并且您的服务器的积压队列已满,则 Windows 将拒绝进一步的连接。这意味着您的服务器接受新连接的速度很慢。

于 2012-06-23T07:06:23.717 回答
0

不确定您是否以编程方式表示,但对于后者,您可以尝试 telnet: telnet host port

telnet yahoo.com 80
telnet localhost 3306

等等

于 2012-06-23T06:39:42.433 回答
0

如果你想检查服务器是否正在监听,并且服务器是 Windows,你可以简单地使用(例如 8888 是你的监听端口)

netstat -ano|findstr "8888"

然后你会看到你的服务器实例的 PID。

另外,如果要检查TCP连接尝试失败的原因,可以使用Wireshark捕获服务器和客户端之间的所有TCP数据包,那么原因就很清楚了。

例如,如果服务器已达到打开套接字数量的限制,您将看到从客户端到服务器的 SIN,以及服务器如何响应。

于 2012-06-23T06:50:11.127 回答