我写了一个发送UDP数据报的应用程序。如果我在装有Windows 10的计算机上试用它,它可以正常工作,另一个设备(商用)可以正确响应。如果我在Windows 10 IoT(Raspberry Pi2)上执行相同的应用程序,则设备不响应。首先是防火墙问题。因此,我查看了WireShark的流量。在这两种情况下,通过WLAN发送的数据报都是相同的。在Windows 10的情况下,我看到设备的响应,如果物联网没有响应。
以下是我用来发送数据报的方法:
private async void FindDevice()
{
DatagramSocket socket = new DatagramSocket();
socket.MessageReceived += Socket_MessageReceived;
IPAddress ipAddressOfSender;
// device must be in the same network
if (IPAddress.TryParse("192.168.0.1", out ipAddressOfSender))
{
byte[] broadcastIpAddress = ipAddressOfSender.GetAddressBytes();
// Assuming to work with a class C IP address, so broadcast address looks like a.b.c.255
broadcastIpAddress[3] = 255;
using (var stream = await socket.GetOutputStreamAsync(new HostName(new IPAddress(broadcastIpAddress).ToString()), SendingPort.ToString()))
{
using (var writer = new DataWriter(stream))
{
byte[] helloSmartPlugs = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x45, 0x44, 0x49, 0x4d, 0x41,
0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0xff, 0x5e };
writer.WriteBytes(helloSmartPlugs);
await writer.StoreAsync();
}
}
}
}
在某些示例中,还绑定了侦听器端口。没关系,如果我这样做,它仍然适用于Windows,但不适用于物联网。有人可以解释一下吗?我以为我需要听众端口。
可能是什么原因,设备在物联网的情况下没有回答?我必须在套接字上提供设置吗?