【问题标题】:Can't connect to a port, but netstat shows what port LISTENING无法连接到端口,但 netstat 显示正在监听的端口
【发布时间】:2013-04-26 18:08:49
【问题描述】:

尝试连接时出现错误:

“由于目标机器主动拒绝,无法建立连接。”

但 netstat 显示:

TCP    0.0.0.0:MY_PORT           MY_PC:0        LISTENING

我能想到的唯一问题是绑定到端口的应用程序正在逐步调试,所以它被暂停了。我该如何解决它。

基本上我需要知道是否有人已经绑定到一个端口。 (我不能使用SO_EXCLUSIVEADDRUSE


我认为我无法连接,因为使用端口的应用程序处于调试暂停模式,所以,第一次连接时它不会“清除连接”。

【问题讨论】:

  • 没有防火墙可以挡道吗?
  • @Joachim Pileborg,好问题,但我认为不是,这两个应用程序都在同一台 PC 上,而且我在这台 PC 上没有防火墙
  • 顺便说一句,如果其他人已经在使用该端口,那么您将无法绑定到它。
  • 另外,您可以使用-b 选项到netstat 来显示绑定到端口的程序。
  • @Joachim Pileborg,如果不使用独占绑定我可以绑定到同一个端口,我知道谁绑定了

标签: c++ port winsock


【解决方案1】:

如果您只想检查给定端口是否正在使用,您可以bind() 到它并检查是否失败。如果您不想创建套接字并绑定它,则可以改为循环遍历 GetTcpTable()GetTcpTable2()GetTcp6Table()GetTcp6Table2()GetUdpTable()GetUdp6Table() 函数返回的数组. Table2() 不仅报告正在使用的 IP 和端口,还报告拥有它们的进程 ID(然后您可以从中访问其他信息,如文件名)。这些与 netstat 在内部用于获取其信息的函数相同。

【讨论】:

    猜你喜欢
    • 2016-12-13
    • 1970-01-01
    • 2018-03-05
    • 2022-01-24
    • 2013-05-14
    • 2019-06-23
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    相关资源
    最近更新 更多