单播发送UDP不起作用,但广播发送UDP

时间:2012-11-21 14:57:14

标签: android udp send

我有一个奇怪的问题,即如果我发送广播地址(192.168.1.255),我 可以 发送和接收UDP数据包。如果我使用单播地址(192.168.1.83)发送,则数据包不会被传输(我已经使用Wireshark进行了检查)。

发送功能是:

    private void sendPacket(String data) {
        try {
            if (mSocket.isClosed()) {
                Log.e(TAG, "Socket is closed: " + data);
                return;
            }
            Log.d(TAG, "Send: " + data + " - " + myLocalIP.toString()+ " - " + myBcastIP.toString());
            DatagramPacket packet = new DatagramPacket(data.getBytes(),
                    data.length(), myLocalIP, BCAST_PORT);

            mSocket.send(packet);
        } catch (Exception e) {
            Log.e(TAG, "Exception during write", e);
        }
    }

我的manefest文件具有以下权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

鉴于广播有效,我无法想象我做错了什么。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您是否尝试过其他端口? 也许多次循环这个方法,UDP不保证100%的数据包传输

您是否在代码中使用socket.setBroadcast(true) somwhere来发送广播消息?