socket通信,网卡绑定问题?

肆水東澤 2011-09-05 12:46:16
我现在一台机器上有两个网卡
分别有2个不同的IP地址如:192.168.0.101和192.168.0.102
启动两个程序A B

都跟另一台机器192.168.0.100进行通信

socket如何绑定区分这两个网卡?
...全文
317 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackyjkchen 2011-09-05
  • 打赏
  • 举报
回复
这是我做的一个类封装的一部分,详细说明了用法,注意直接传入的ip得是ulong型的,可以用这个inet_addr转

USHORT CBaseSocket::Bind(ULONG ulHost, USHORT usPort, BOOLEAN bTrav /* = FALSE */)
{
sockaddr_in svrAddr;
svrAddr.sin_family = AF_INET;
svrAddr.sin_addr.s_addr = ulHost;
svrAddr.sin_port = htons(usPort);
if (!bTrav)
return (bind(m_Socket, (const sockaddr*)&svrAddr, sizeof(svrAddr)) == SOCKET_ERROR) ? 0 : usPort;
else
{
USHORT usPortTrav = usPort;
while(TRUE)
{
if(bind(m_Socket, (const sockaddr*)&svrAddr, sizeof(svrAddr)) == SOCKET_ERROR)
{
svrAddr.sin_port = htons(++usPortTrav);
if (usPort == 65535)
return 0;
}
else
return usPortTrav;
}

}
}
jackyjkchen 2011-09-05
  • 打赏
  • 举报
回复
如果你是监听端,bind的时候是可以指定IP的(不光是端口),这样就能够之间听来自其中一个网卡的数据
shenyi0106 2011-09-05
  • 打赏
  • 举报
回复
这个函数内部用了bind函数,有兴趣可以看看CAsyncSocket这个类的MFC源码
肆水東澤 2011-09-05
  • 打赏
  • 举报
回复
谢谢大家,是不是用Create(iPort,SOCK_STREAM,lpszHostAddress)也可以,就不需要bind()绑定了?
zj18255321686 2011-09-05
  • 打赏
  • 举报
回复
CSDN:我擦你妹!!!!!!!!!!!!!!
fanpin88 2011-09-05
  • 打赏
  • 举报
回复
通过bind函数,指定IP地址即可
shenyi0106 2011-09-05
  • 打赏
  • 举报
回复
通过bind函数,指定IP地址即可
Eleven 2011-09-05
  • 打赏
  • 举报
回复
显示调用bind函数
jackyjkchen 2011-09-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fqzlala 的回复:]

多谢楼上

就是想A就用192.168.0.101的网卡发送接收数据,B用192.168.0.102发送接收
[/Quote]
没问题,bind一下就行了
肆水東澤 2011-09-05
  • 打赏
  • 举报
回复
多谢楼上

就是想A就用192.168.0.101的网卡发送接收数据,B用192.168.0.102发送接收

18,356

社区成员

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

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