bind双网口的问题

rainliuyu 2010-02-02 07:44:01
机器上有2个网口,分别设置了IP是
192.168.0.1和192.168.0.2

如果我允许外部程序从这两个网口都能连接上,我应如何绑定服务器上的SOCKET?

能不能只用一个SOCKET,在BIND之后ACCEPT来自两个不同网口的连接请求?

还是必须使用2个SOCKET,分别BIND两个网口,各自等待来自该网口的连接?

望解答
...全文
267 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainliuyu 2010-02-05
  • 打赏
  • 举报
回复
这几天忙,没来得及结贴
问题已经解决了,正如Icedmilk所说,只要在bind时候,填写sockaddr的IP地址为INADDR_ANY就可以了

我的情况,第二个网口无法连接其实是我局域网设置的问题。
后来把网段修改一下就好了,第一个网口IP是192.168.0.1,第二个网口改成了192.168.1.2
如果不修改网段,通过什么手段把服务器两个网口的路由设置一下也行,不过俺就不知道了

可能我的问题没描述清楚,我在服务器端是创建了两个socket,并各自侦听某个端口,但是我希望连接请求可以从两个网口中任意一个连进来
现在的方法就是两个socket在bind的时候都填写INADDR_ANY,但是侦听的端口是不同的

感谢各位,这个帖子给的分数实在有限,还拖了几天才结,真不好意思

Icedmilk 2010-02-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 rainliuyu 的回复:]
谢谢楼上的哥们,我也是这么觉得,但是我的程序貌似只接accept到第一个连接
对.2的连接没有反应

也可能是我的网卡设置有问题吧,回头我再试试
[/Quote]
可能是你的代码的问题吧。
当你的第一个连接到来的时候。你的accept函数也就返回了。这个时候如果你不再次调用accept函数,后来的连接请求就不会得到响应
bragi523 2010-02-03
  • 打赏
  • 举报
回复
只能监听一个端口
你这就是相当于两个端口
必须用两个端口
JonathanS666 2010-02-03
  • 打赏
  • 举报
回复
2个
fzy8888cn 2010-02-02
  • 打赏
  • 举报
回复
应该是可以的。如何没有LZ这样的特殊需求,还是建议绑定明确的IP。LZ的代码应该是服务端,建议客户端运行在双网卡的机器上也在 connect之前绑定明确的IP
rainliuyu 2010-02-02
  • 打赏
  • 举报
回复
谢谢楼上的哥们,我也是这么觉得,但是我的程序貌似只接accept到第一个连接
对.2的连接没有反应

也可能是我的网卡设置有问题吧,回头我再试试
Icedmilk 2010-02-02
  • 打赏
  • 举报
回复
是的
只要用一个socket就可以对所有的网卡监听。
Icedmilk 2010-02-02
  • 打赏
  • 举报
回复
INADDR_ANY 表示所有地址
应该只用一个listen就行了吧,因为没接到一个连接都要创建一个新的socket,这个新的socket就有了具体的IP

待我试一下
rollrock1987 2010-02-02
  • 打赏
  • 举报
回复
应该是2个的吧??? SOCKADDR_IN 结构体在赋值的时候 就必须指定 IP的啊

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧