【问题标题】:Socket that listens for everything监听一切的套接字
【发布时间】:2015-11-20 05:52:24
【问题描述】:

我的网络上有一台具有多个 IP 地址并使用多个端口的计算机。有没有办法打开一个套接字,接收所有这些 ip 地址和所有这些端口上的数据,然后让接收到的数据包含来自数据包头的 ip 地址,以及它接收到它的端口?

改写: 如何设置可以在多个端口和 IP 上接收数据的套接字? 那么一旦我收到数据,有没有办法知道数据来自哪里?

【问题讨论】:

  • 如果你监听特殊的IP地址0.0.0.0,socket会绑定所有的接口。
  • 侦听“多个端口”不是 TCP——也许您应该捕获原始 IP 数据包。像libpcap 这样的库应该对此很有用。

标签: c sockets network-programming


【解决方案1】:

您不能只使用一个套接字绑定到多个端口。 TCP/IP 网络堆栈基于一个端口 == 一个套接字这一理念。

【讨论】:

    【解决方案2】:

    要监听所有 IP 地址,只需使用 INADDR_ANY。但是,您仍然需要每个端口一个套接字。

    【讨论】:

      【解决方案3】:
      var s = array();
      for(i = 1; i <= 65535; i++) {
          s[i] = socket.listen_port(i);
          fwrite('file.dat', s[i].read()."\n");
      }
      

      当然是你的编程语言。那只是想法。 不要忘记,如果端口已被另一个应用程序使用,您将无法读取或写入它 - 我想是的......

      【讨论】:

        猜你喜欢
        • 2011-02-15
        • 2013-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-05
        • 2023-03-09
        • 2016-04-06
        • 2016-10-12
        相关资源
        最近更新 更多