我需要一个启用了热点的Android设备,以便经常向与其自身连接的所有设备广播UDP消息。广播到255.255.255.255非常适合连接到外部热点的设备,但是在主机设备本身上这样做,只会引发WSAENETUNREACH套接字错误(网络无法访问)。
我尝试通过设备本身上的可用本地IP进行轮询,但是对于特定的Android平板电脑,当它仅处于热点模式(192.168.xx)时,我仅使用一个本地IP。
这就是我要在外部热点上广播的内容。
UdpClient server = new UdpClient(broadcastPort);
byte[] requestData = Encoding.ASCII.GetBytes(">Some message<");
IPEndPoint broadcastEndpoint = new IPEndPoint(IPAddress.Broadcast, broadcastPort);
server.EnableBroadcast = true;
while(!stop) {
try {
await server.SendAsync(requestData, requestData.Length, broadcastEndpoint);
await Task.Delay(1000);
}catch(SocketException se) {
Debug.LogWarning("Socket error (" + se.ErrorCode + "), could not broadcast: " + se.ToString());
}catch(Exception e) {
Debug.LogWarning("Error, could not broadcast: " + e.ToString());
}
}
server.Close();
由于对网络缺乏经验,因此我希望这对于启用热点的设备也可以类似地工作。但是,在这种情况下,它只会引发SocketException(错误代码10051)。