阅读多个端口

时间:2018-01-23 09:48:57

标签: c++ linux network-programming

我正在尝试从大量的UDP端口(10k)中读取,但我想这样做而不创建10k套接字并监听它们(并使用epoll)。一种解决方案是使用iptables和写规则将数据包转发到服务器正在侦听的单个端口。但是,我必须能够在代码中读取原始目标端口。

有人知道是否有可能这样做?

2 个答案:

答案 0 :(得分:1)

您可以使用网络隧道接口(tun)执行此操作。如果您使用iptables转发到您的tun设备,那么您的程序可以从那里读取数据包。 (您可能需要自己解释IP标头,可能使用像libtins这样的库。)

这里有一个不错的教程:http://backreference.org/2010/03/26/tuntap-interface-tutorial/

答案 1 :(得分:0)

' recvfrom的'可以获取远程sockaddr,然后使用inet_ntop和ntohs来获取ip和端口。