为了从服务器接收UDP广播包到android设备,我使用服务类并在线程中侦听数据包.它成功接收数据包.问题是如果在同一时间从服务器发送多个数据包,那么将导致数据包丢失.
我甚至尝试使用队列并在单独的线程中处理收到的数据包,然后我也没有收到数据包.我对网络编程完全陌生,任何帮助都会受到广泛赞赏
void startListenForUdpBroadcast() {
UDPBroadcastThread = new Thread(new Runnable() {
public void run() {
try {
InetAddress broadcastIP = InetAddress.getByName(UdpConstants.IP_ADDRESS);
Integer port = UdpConstants.RECEIVER_PORT;
while (shouldRestartSocketListen) {
listenAndWaitAndThrowIntent(broadcastIP, port);
}
} catch (Exception e) {
Log.i("UDP", "no longer listening for UDP broadcasts cause of error " + e.getMessage());
}
}
});
UDPBroadcastThread.setPriority(Thread.MAX_PRIORITY); //Setting The Listener thread to MAX PRIORITY to minimize packet loss.
UDPBroadcastThread.start();
}
Run Code Online (Sandbox Code Playgroud)
此代码侦听新数据包并推送到队列
private void listenAndWaitAndThrowIntent(InetAddress broadcastIP, Integer port) throws Exception {
byte[] recvBuf = new …Run Code Online (Sandbox Code Playgroud)