我看了一遍,找不到解决这个问题的方法.我已经尝试过我能看到的所有组合而没有运气.
基本上,我想选择一个接口,在两台机器上启动UDP客户端和发送/接收消息.当只有一个NIC处于活动状态时,一切正常,但当两个处于活动状态时,它将停止工作.我看过Wireshark并且有一个NIC可以看到进出的数据包.
现在,当我使用两个网卡时,我只能从第一个枚举的网卡中接收TX,并且无法接收任何网卡.当两个NIC都处于活动状态时,WireShark不会在端口上显示任何收到的数据包.
public UDPInstance(IPAddress ip,int port,int RXFrequency) { rxFreq = RXFrequency; // Listener Init TXclient = new UdpClient(); RXclient = new UdpClient(); TXclient.ExclusiveAddressUse = false; RXclient.ExclusiveAddressUse = false; //localEp = new IPEndPoint(ip,port); TXlocalEp = new IPEndPoint(ip,port); RXlocalEp = new IPEndPoint(IPAddress.Any,port); TXclient.Client.SetSocketoption(SocketoptionLevel.socket,SocketoptionName.ReuseAddress,true); RXclient.Client.SetSocketoption(SocketoptionLevel.socket,true); TXclient.Client.Bind(TXlocalEp); RXclient.Client.Bind(RXlocalEp); InterfaceIP = ip.ToString(); multicastaddress = IPAddress.Parse("239.0.0.222"); TXclient.JoinMulticastGroup(multicastaddress); RXclient.JoinMulticastGroup(multicastaddress); // Sender Init remoteep = new IPEndPoint(multicastaddress,port); Listener = null; RXData = new List<string>(); StartListenerThread(); } public void StartListenerThread() { Listener = new Thread(new ThreadStart(ListenerThread)); Listener.IsBackground = true; Listener.Start(); } public void StopListenerThread() { Listener.Abort(); } private void ListenerThread() { while (true) { Byte[] data = RXclient.Receive(ref remoteep); string datastr = Encoding.Unicode.GetString(data); if (datastr != "") { string[] PacketStrings = datastr.Split(new char[] { '~' }); foreach (string pkt in PacketStrings) RXData.Add(pkt); } Thread.Sleep(rxFreq); } } public void Transmit(string data) { byte[] buffer; buffer = Encoding.Unicode.GetBytes(data); TXclient.Send(buffer,buffer.Length,remoteep); }
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。