双网卡 UDP 通讯问题

a12321321321312321 2013-01-05 08:30:23
服务器两个IP,电信一个网通一个. 在双IP下,在使用常规方法创建UDP服务(即用一个Socket绑定0.0.0.0,即绑定本机所有IP) 时会产生一个由双IP造成的问题:
假设 本机有电信IP 1 网通IP 2
当一个电信用户A发一个UDP包到电信IP 2,而服务器处理返回时,有可能是用IP 1 发送出去的.
这就造成可能用户A会收不到该UDP返回包,原因是对用户A的防火墙而言IP 1是一个陌生IP,有可能被拒绝了.


_receiveSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
_localEndPoint = new IPEndPoint(IPAddress.Any, port);
_receiveSocket.Bind(_localEndPoint);

//-----发送 的时候不能指定是用联通IP发送还是电信IP发送,导致会出现,客户端给联通IP发送数据,
//----- 用电信IP去回数据客户端会收不到数据包。。
_receiveSocket.SendTo(data, ipEndPoint);

目前的解决方案就是分别监听两个IP。。不知道还有没有其他好的解决方法。
...全文
298 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
段传涛 2013-01-05
  • 打赏
  • 举报
回复
marks 做个标记学习一下。

110,477

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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