我開發一個聊天應用程序,其中的Android客戶端將交換各自的IP的使用多播(UDP)。Android設備無法接收多播包
每個設備都會在一個單獨的線程中將其ip發送給多個客戶端(運行該應用程序的所有設備)。將會有另一個接收器線程監聽這些多播數據包。這是我的代碼。
//組播代碼。
DatagramSocket socket = new DatagramSocket(9898);
byte buff[] = ip.getBytes();
DatagramPacket packet = new DatagramPacket(buff, buff.length, InetAddress.getByName("224.0.0.1"),9999);
socket.send(packet);
socket.close();
//接收機代碼
MulticastSocket socket = new MulticastSocket(9999);
InetAddress group = InetAddress.getByName("224.0.0.1");
socket.joinGroup(group);
DatagramPacket packet;
byte[] buf = new byte[256];
byte b = 'x'; //just a separator for time being
Arrays.fill(buf,b);
packet = new DatagramPacket(buf, buf.length);
String received= "";
while(received!=null)
{
socket.receive(packet);
received = new String(packet.getData());
received = received.substring(0,received.indexOf('x'));
this.setIp(received);
System.out.println("Address: " + received);
}
socket.leaveGroup(group);
socket.close();
的問題是每個設備打印其自己的地址。這似乎也從來不聽其他多播包(我的意思是應該打印其他IP的一樣)。我也會得到一個下面的日誌,不知道這是相關的。
11-04 23:56:17.985: I/OSNetworkSystem(603): mcastAddDropMembership interfaceIndex=0
任何幫助將不勝感激。
看起來這只是針對無線多播數據包。我通過互聯網進行多播(使用正常的APN,沒有WIFI)。它會繼續工作嗎? –
我不認爲這是可能的Android上,看看答案[這裏](http://stackoverflow.com/questions/3068497/udp-multicast-over-the-internet)的幫助。 – yorkw
謝謝,我會看看。 –