1.UDP广播。
客户端开启一个端口监听数据,服务器端指定该端口发送数据,客户端即可收到数据,服务器绑定的广播地址为255.255.255.255
客户端监听:
public class BroadcastClient {
private int MessageIndex = 0;
private int port = 6787;//数据监听绑定端口
private boolean closed = false;
public void start() {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("BroadcastClient start ");
runClient();
}
}).start();
}
DatagramSocket socket = null;
private void runClient() {
try {
byte[] receiveBuffer = new byte[1024];//数据缓冲区
socket = new DatagramSocket(port);//绑定端口进行数据监听
DatagramPacket receivePacket = new DatagramPacket(receiveBuffer, receiveBuffer.length);//数据接收包囊
while (!closed) {
count();//计算数量,超过五十次关闭连接
socket.receive(receivePacket);//接收数据
System.out.println("received packet from " + receivePacket.getAddress().getHostAddress() + " : " + receivePacket.getPort());
String msg = new String(receivePacket.getData(), receivePacket.getOffset(), receivePacket.getLength());
System.out.println("received " + msg);
Thread.sleep(2000);
}
System.out.println("socket close ");
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void count() {
MessageIndex++;
if (MessageIndex >= 50) {
closed = true;
}
}
public static void main(String[] s) {
BroadcastClient client = new BroadcastClient();
client.start();
}
}
//运行效果
BroadcastClient start
received packet from 192.168.2.221 : 58458
received hello ,message from server,0
received packet from 192.168.2.221 : 58460
received hello ,message from server,1
received packet from 192