我有一个服务器应用程序(unimrcpserver.exe),它正在响应客户端进程的请求。这个服务器进程监听着几个端口。
使用netstat -a
命令,我可以得到我的进程的以下行。
TCP 192.168.10.65:2544 MERTB-PC:0 LISTENING
TCP 192.168.10.65:2554 MERTB-PC:0 LISTENING
TCP 192.168.10.65:9060 MERTB-PC:0 LISTENING
通常情况下,当系统正常工作时,我从这些端口向服务器发出请求,每个端口都能正常工作。
在进行压力测试时,我遇到了一个情况,系统不再响应我通过端口2554发出的请求。
netstat -a
仍然显示以上行内容,因此服务器仍然在监听此端口。当我在同一台机器上运行telnet时,它会给出一个错误:
telnet 192.168.10.65 2554
Connecting To 192.168.10.65...Could not open connection to the host, on port 2554: Connect failed
我还用c++编写了一个简单的程序,以获取系统生成的连接(connect())请求的确切错误消息。这次我得到了以下错误:
No connection could be made because the target machine actively refused it
附加信息: 所有内容都在同一台Windows机器上。防火墙已禁用。这种情况仅在我进行压力测试时发送多个请求同时发生。在出现这种情况之前,系统处理了约13000个请求,大约花费了半个小时。
所以问题是: 这种情况如何发生? netstat报告该端口正在“LISTENING”,但我无法连接到它。如果这可能是由编程错误引起的,什么样的错误会导致这种行为?
ps ax | grep 2544
。 - ForceBru