相关疑难解决方法(0)

在Android设备中接收UDP广播时丢包

为了从服务器接收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)

android udp network-programming datagram packets

7
推荐指数
1
解决办法
2296
查看次数

标签 统计

android ×1

datagram ×1

network-programming ×1

packets ×1

udp ×1