尝试连接时出现错误:
"No connection could be made because the target machine actively refused it."
但是 netstat 显示:
TCP 0.0.0.0:MY_PORT MY_PC:0 LISTENING
唯一的问题我能想到的是绑定(bind)到端口的应用程序正在逐步调试,所以它被暂停了。我该如何解决它。
基本上我需要以某种方式知道是否有人已经绑定(bind)到端口。 (我不能使用 SO_EXCLUSIVEADDRUSE
)
我想我无法连接,因为使用端口的应用程序处于调试暂停模式,所以,我第一次连接时它不会“清除连接”。
最佳答案
如果您只想检查给定端口是否正在使用,您可以bind()
到它并检查是否失败。如果您不想创建套接字并绑定(bind)它,那么您可以循环遍历 GetTcpTable()
返回的数组。 , GetTcpTable2()
, GetTcp6Table()
, GetTcp6Table2()
, GetUdpTable()
, 和 GetUdp6Table()
功能。 Table2()
不仅报告正在使用的 IP 和端口,还报告拥有它们的进程 ID(然后您可以从中访问其他信息,如文件名)。这些函数与 netstat 在内部用于获取其信息的函数相同。
关于c++ - 无法连接到端口,但 netstat 显示正在监听的端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16340259/