发送广播一般UDP,不用考虑对方在不在连接状态,直接发送。
安卓设备作为广播接收端:
public class BroadCastClient {
private static DatagramSocket udpSocket;
private static byte[] data = new byte[256];
private static DatagramPacket udpPacket = new DatagramPacket(data, 256);
public void receivestart(){
new Thread(){
public void run(){
try {
udpSocket = new DatagramSocket(43708);
} catch (Exception e) {
System.out.println(e.toString());
}
while (true) {
try {
udpSocket.receive(udpPacket);
} catch (Exception e) {
System.out.println(e.toString());
}
if (udpPacket.getLength() != 0) {
String codeString = new String(data, 0, udpPacket.getLength());
System.out.println(codeString);
}
}
}
}.start();
}
}
作为发送端
public class BroadCastServer {
private boolean start = true;
private EditText IPAddress;
private String address;
public static final int DEFAULT_PORT = 43708;
private static final int MAX_DATA_PACKET_LENGTH = 40;
private byte[] buffer = new byte[MAX_DATA_PACKET_LENGTH];
private DatagramPacket dataPacket = null;
private DatagramSocket udpSocket = null;
public void BroadCastStart(){
try {
udpSocket = new DatagramSocket(DEFAULT_PORT);
dataPacket = new DatagramPacket(buffer, MAX_DATA_PACKET_LENGTH);
dataPacket.setPort(DEFAULT_PORT);
InetAddress broadcastAddr;
broadcastAddr = InetAddress.getByName("255.255.255.255");
dataPacket.setAddress(broadcastAddr);
} catch (Exception e) {
}
}
public void BroadCastSend(byte[] data){
dataPacket.setData(data);
dataPacket.setLength(data.length);
try {
udpSocket.send(dataPacket);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void BroadCastClose(){
udpSocket.close();
udpSocket=null;
if(null!=dataPacket)
dataPacket=null;
}
}
本文引用到其他高手的代码。