客户端
public class MainActivity extends Activity {
private MulticastSocket ms;
private Button sendUDPBrocast;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init();
}
public void init() {
setContentView(R.layout.main);
sendUDPBrocast = (Button) findViewById(R.id.send);
sendUDPBrocast.setOnClickListener(new SendUDPBrocastListener());
try {
ms = new MulticastSocket();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 单击按钮时,发送局域网广播
* */
class SendUDPBrocastListener implements OnClickListener{
@Override
public void onClick(View v) {
DatagramPacket dataPacket = null;
try {
ms.setTimeToLive(4);
byte[] data = "192.168.1.101".getBytes();
InetAddress address = InetAddress.getByName("224.0.0.1");
System.out.println(address.isMulticastAddress());
dataPacket = new DatagramPacket(data, data.length, address,
8003);
ms.send(dataPacket);
ms.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
服务端
public class MainActivity extends Activity implements Runnable {
private MulticastSocket ds;
String multicastHost="224.0.0.1";
InetAddress receiveAddress;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
ds = new MulticastSocket(8003);
receiveAddress=InetAddress.getByName(multicastHost);
ds.joinGroup(receiveAddress);
new Thread(this).start();
} catch (Exception e1) {
e1.printStackTrace();
}
}
@Override
public void run() {
byte buf[] = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, 1024);
while (true) {
try {
ds.receive(dp);
System.out.println("client ip : "+new String(buf, 0, dp.getLength()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}