我不是要求所有的IP都可以实现LISTEN,比如我开启一个DHCP服务,只希望其中的两块网卡响应,第三块网卡不响,每个网卡一个IP,所以我希望其中的两个IP开启LISTEN
本帖最后由 microsoftwin 于 2013-01-11 01:26:19 编辑主机A有3个IP,我想让Server程序在其中两个IP实现listen,怎么实现? 一个Socket是不是只能调用bind一次?
引用 3 楼 zzz_zou 的回复:创建2个socket来listen就好了,1个socket肯定不可以绑定2个IP的。 我印象中,socket只能和一个端口绑定,IP地址好像没限制。 INADDR_ANY好像就是不关心IP。 假设我开个UDP接收端口,任何网段的UDP包,只要发给该端口,都能收到。 TCP也应该是这样吧。。
创建2个socket来listen就好了,1个socket肯定不可以绑定2个IP的。
INADDR_ANY 这个是指0.0.0.0 你开个UDP端口号,在局域网内别人是广播或者组播(你要在这个组播组内)的话你才可以收到。
我bind二次,第二次会返回10022错误,不管是换Port还是IP都一样,所以我觉得一个Socket只能bind一次,ADDR_ANY是所有的IP都有效,但是其中一个IP不能listen,只能建立一个SOCKET数组实现listen
18,356
社区成员
64,214
社区内容
加载中
试试用AI创作助手写篇文章吧