启用热点的Android设备如何向与其连接的所有设备广播UDP消息

时间:2019-05-18 11:59:38

标签: c# android networking udp broadcast

我需要一个启用了热点的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)。

0 个答案:

没有答案