关于网络报文选择网卡出口的问题!****************

Huamuma 2006-09-06 02:42:32
pc机装有两个网卡
卡1 ip设置为IP1 建立socket1绑定为此ip
卡2 ip设置为IP2 建立socket2绑定为此ip

现在我通过socket1和socket2分别发送udp报文
个人认为调用socket1发送的报文应该从网卡1出去,
调用socket2发送的报文应该从网卡2出去

但现在通过抓包工具,发现两个socket发送的报文都从其中的一个网卡出去了

怎么回事 怎么设定让它从对应的网卡出去,我用的是CSocket类

谢谢


...全文
144 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Huamuma 2006-09-06
  • 打赏
  • 举报
回复
是不是我在CSocket的Create后还需要调用bind?
那我在Create中不是输入了ip地址吗,应该在这一步它同时就会绑定吧?
Huamuma 2006-09-06
  • 打赏
  • 举报
回复
基于对话框的程序

添加成员变量
CSocket m_socketRcvZBJ2;
CSocket m_socketRcvZKJ5;

BOOL CDataLinkDlg::OnInitDialog()中添加:
if (m_socketRcvZKJ5.Create(0x5300, SOCK_DGRAM, "192.22.200.9") == FALSE)
{
MessageBox("Error Create m_socketRcvZKJ5");
}

if (m_socketRcvZBJ2.Create(0x5400, SOCK_DGRAM, "192.9.200.93") == FALSE)
{
MessageBox("Error Create m_socketRcvZBJ2");
}

点击一button处理中加入:
m_socketRcvZKJ5.SendTo(buff, len, 0x5300, "224.0.0.115");
m_socketRcvZBJ2.SendTo(buff, len, 0x5400, "224.7.0.19");

抓包工具用的是WildPackets EtherPeek NX,发现报文都从"192.22.200.9"绑定的这个网卡出来了,并且连接这块网卡的外部机器的确收到了 ,而连另一块网卡的外部机器什么都没有收到。

而且报文的ip头中发送地址都是192.22.200.9!
为什么我的socketRcvZBJ2发送的报文的发送地址不是192.9.200.93呢?

在线等,急,谢谢赐教!
mimong_lin 2006-09-06
  • 打赏
  • 举报
回复
就是的,bind的时候,就是指定了网络接口了,
softrain 2006-09-06
  • 打赏
  • 举报
回复
不会bind错了吧,贴相关代码看看.
你用什么抓包工具?
Huamuma 2006-09-06
  • 打赏
  • 举报
回复
没人知道吗?
顶一下 谢谢!

18,356

社区成员

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

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