首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以posix方式绑定到特定的NIC

以posix方式绑定到特定的NIC
EN

Stack Overflow用户
提问于 2010-11-24 07:23:14
回答 2查看 633关注 0票数 0

我的机器上有三个网络接口(eth0-2),每个接口都有自己的网络子网192.168.10、192.168.20、192.168.30。我想知道如何使用BSD套接字侦听特定NIC的端口,例如,侦听eth1的端口10000 (192.168.20),而此时我得到的似乎只是列表/绑定到eth0。我目前使用的操作系统是Ubuntu,但我希望该解决方案能够在任何posix系统上工作/移植。

另外,我正在用C++开发我的应用程序,并希望得到一些关于C++网络库的指导,我已经看了一下Qt,但是许可证不适合我正在做的开发类型。

EN

回答 2

Stack Overflow用户

发布于 2010-11-24 07:29:19

bind()系统调用允许您指定要将套接字绑定到的地址。您可以绑定到特定地址,也可以绑定到INADDR_ANY,它将侦听所有传入地址,而不管接口如何。

至于网络库,boost::asio是好的。当然,为了获得更好的推荐,您可能需要指定比“网络库”更多的需求。

票数 2
EN

Stack Overflow用户

发布于 2010-11-24 07:40:38

如果您将单个侦听套接字绑定到主机上的所有IP (例如端口10000上),我认为没有一种通用机制来确定特定接受式连接进入的IP地址。

一种解决方案是将单独的套接字绑定到3个IP地址中的每一个,然后使用SELECT监视传入的连接。这样,您就可以始终知道使用了哪个传入IP地址。

作为另一种选择,如果您完全控制客户端协议,您可以设计一个要求,即客户端在建立套接字连接后立即传输目标IP。这将允许您使用单个服务器套接字侦听所有传入连接,但需要您信任客户端提供的信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4264340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档