public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable() {
@Override
public void run() {
createUDP();
}
}).start();
findViewById(R.id.server).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
execuBroadCast();
}
});
findViewById(R.id.client).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
acceptBroadCast();
}
});
}
//广播接收
MulticastSocket multicastSocket1 = null;
InetAddress inetAddress1 = null;
String str="";
private void acceptBroadCast() {
new Thread(new Runnable() {
@Override
public void run() {
try {
multicastSocket1 = new MulticastSocket(BROADCAST_PORT);
inetAddress1 = InetAddress.getByName(BROADCAST_IP);
multicastSocket1.joinGroup(inetAddress1);
byte buf[] = new byte[1024];
DatagramPacket dp = null;
dp = new DatagramPacket(buf, buf.length, inetAddress1,BROADCAST_PORT);
while (true) {
multicastSocket1.receive(dp);
str = new String(buf, 0, dp.getLength());
Log.d("=========", str);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
//广播发送
InetAddress inetAddress = null;
MulticastSocket multicastSocket = null;
private static int BROADCAST_PORT = 9899;
private static String BROADCAST_IP = "224.0.0.1";
private void createUDP(){
try {
inetAddress = InetAddress.getByName(BROADCAST_IP);
multicastSocket = new MulticastSocket(BROADCAST_PORT);
multicastSocket.setTimeToLive(1);
multicastSocket.joinGroup(inetAddress);
} catch (Exception e) {
e.printStackTrace();
}
}
private void execuBroadCast() {
new Thread(new Runnable() {
@Override
public void run() {
DatagramPacket dataPacket = null;
byte[] data = "hello".getBytes();
dataPacket = new DatagramPacket(data, data.length, inetAddress,BROADCAST_PORT);
try {
multicastSocket.send(dataPacket);
System.out.println("ggggggggggggggggg");
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}