UDP通信,数据发送方是一个单片机,主动向PC机发送UDP数据
但是 IPTool 抓包工具能读到指定IP地址和端口到指定PC机IP地址和端口的UDP数据。但PC机上的软件就是读不到数据,这可能是怎么回事?
PC机上用C# 和 Java 都试过了,并且用的是最基本的读数据代码,都读不到。
可以肯定的是,PC机上的C#和Java程序都没毛病,因为用另外一台PC机模拟单片机发送数据时,它是能正常读到数据的。
以下是C#和Java的读数据代码
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); server.Bind(new IPEndPoint(IPAddress.Parse("192.168.0.30"), 4060)); Console.WriteLine("启动监听,本地端口:4060"); byte[] buffer = new byte[1024]; EndPoint remotePoint = new IPEndPoint(IPAddress.Any, 4001); while (true) { int size = server.ReceiveFrom(buffer, SocketFlags.None, ref remotePoint); string hex = Convert.ToHexString(buffer, 0, size); Console.WriteLine("收到数据:" + hex); }
DatagramSocket ds = new DatagramSocket(4060); byte[] buf = new byte[1024]; while(true){ DatagramPacket packet = new DatagramPacket(buf, buf.length); ds.receive(packet); System.out.println("data size = " + packet.getLength()); }
会不会是监听绑定的地址不对
反复确认过了,没有错误
确认了一下,对方硬件故障