Ich entwickle eine Chat-Anwendung, bei der Android-Clients ihre IPs mit Multicasting (UDP) austauschen.Android-Gerät empfängt kein Multicast-Paket
Jedes Gerät sendet seine IP an mehrere Clients (alle Geräte, auf denen diese App läuft) in einem separaten Thread. Es wird einen weiteren Empfänger-Thread geben, der diese Multicast-Pakete abhören wird. Hier ist mein Code.
// Multicasting-Code.
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();
// Receiver Code
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();
Das Problem ist, jedes Gerät seine eigene Adresse druckt. Es scheint, dass es nie auf andere Multicast-Pakete hört (ich meine, es sollte auch andere IPs drucken). Ich bekomme auch ein Protokoll unten, nicht sicher, ob das verwandt ist.
11-04 23:56:17.985: I/OSNetworkSystem(603): mcastAddDropMembership interfaceIndex=0
Jede Hilfe wird geschätzt.
es so aussieht, ist nur für WiFi-Multicast-Pakete. Ich bin Multicasting über das Internet (mit normalen APN, kein WIFI). Wird es noch funktionieren? –
Ich glaube nicht, dass es auf Android möglich ist, ob Antwort [hier] (http://stackoverflow.com/questions/3068497/udp-multicast-over-the-internet) hilft. – yorkw
Danke, ich werde es mir ansehen. –