在一个系统上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个程序接收不到任何数据(自己的和另一个程序的)。
请大家帮帮忙?