Поддерживается ли MulticastSocket в Android 2.3?
У меня есть модуль на Java Server. Этот сервер будет отправлять информацию без перерыва. И у меня есть модуль Android Client (на эмуляторе виртуального устройства). Сначала я запустите Android-клиент, чтобы он дождался получения информации о сервере. Затем я запустил Java-сервер для отправки информации. Наконец, я хочу, чтобы мой эмулятор мог получать информацию с сервера Java. PS: Я буду успешным, если все 2 модуля Java.
Это мой серверный модуль (очень простой)
public class Server {
public Server() throws IOException, InterruptedException{
DatagramSocket socket = new DatagramSocket();
byte[] b = new byte[1024];
DatagramPacket dgram = new DatagramPacket(b, b.length,InetAddress.getByName
("239.0.0.1"), 5000);
System.err.println("Sending "+b.length+" bytes to "+dgram.getAddress()+':'+
dgram.getPort());
while(true) {
System.err.print(".");
socket.send(dgram);
Thread.sleep(1000);
}
}
}
Это мой эмулятор Android (тоже очень просто)
public class ClientForm extends Activity {
private EditText edcontentview;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.clientform);
edcontentview = (EditText)findViewById(R.id.edtcontentview);
MulticastLock _wifiMulticastLock = ((WifiManager)this.getSystemService(Activity.WIFI_SERVICE)).createMulticastLock("_wifiMulticastLock");
_wifiMulticastLock.setReferenceCounted(true);
_wifiMulticastLock.acquire();
new Thread(new Runnable(){
@Override
public void run() {
byte[] b = new byte[1024];
final DatagramPacket dgram = new DatagramPacket(b, b.length);
MulticastSocket socket = null;
try {
socket = new MulticastSocket(5000);
socket.joinGroup(InetAddress.getByName("239.0.0.1"));
} catch (IOException e) {
e.printStackTrace();
}
while(true) {
try {
socket.receive(dgram);
Thread.sleep(1000);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
new Handler().post(new Runnable() {
@Override
public void run() {
edcontentview.append("Received " + dgram.getLength() + " bytes from " + dgram.getAddress());
}
});
dgram.setLength(b.length);
}
}
}).start();
}
}