在一个系统上2个程序采用UDPClient共用一个端口通信的问题

null1 2009-04-17 09:04:52
在正常情况下,2个程序(server,client)分别运行在2台计算机上,但有时用户也会将2个程序安装在一个机器上使用。
我在程序中设置了重用的代码:

方法一:
UCR = new UdpClient();
UCR.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
UCR.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
UCR.Client.Bind(Sender);

方法二:
UCR = new UdpClient();
IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName());
Socket Listener = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
Listener.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
Listener.Bind(new IPEndPoint(IPAddress.Any, SendPort));
MulticastOption multicastOption = new MulticastOption(ips[0]);
Listener.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, multicastOption);
UCR.Client=Listener;


出现的问题是,2个程序发送的数据全被第2个启动的程序接收,第1个程序接收不到任何数据(自己的和另一个程序的)。

请大家帮帮忙?
...全文
399 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunzhiyuan 2011-07-23
  • 打赏
  • 举报
回复
貌似你用的都是本地IP没有,填写对方的IP所以相当于只在本地发送给本地
beckfun 2009-04-17
  • 打赏
  • 举报
回复
一个端口只能给一个人用。
rtdb 2009-04-17
  • 打赏
  • 举报
回复
嗯,Client和Server采用不同的端口。
我不懂电脑 2009-04-17
  • 打赏
  • 举报
回复
端口需要不一样。
jin20000 2009-04-17
  • 打赏
  • 举报
回复
接受数据有问题那就是一台机子上不能重用的意思了..建议还是改成不同的端口
null1 2009-04-17
  • 打赏
  • 举报
回复
端口是可以重用的,我的程序只是在接收数据时有些问题。
还请帮忙!

110,552

社区成员

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

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

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