本文介绍如何使用Java、Python等语言实现数据广播。
[codesyntax lang="java"]
/**
* surenpi.com
*/
package a;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
/**
* @author surenpi.com
* @since jdk1.6
* 2015年8月25日
*/
public class Test {
public static void main(String[] args) throws Exception{
MulticastSocket multiSocket = new MulticastSocket();
InetAddress address = InetAddress.getByName("192.168.94.255");
//加入下面的代码就不能使用上面的地址了
// multiSocket.joinGroup(address);
byte[] buf = "haoasas".getBytes();
DatagramPacket packet = new DatagramPacket(buf, buf.length);
packet.setAddress(address);
packet.setPort(8080);
multiSocket.send(packet);
Thread.sleep(5000);
multiSocket.close();
}
}
[/codesyntax] 下面是接受广播的代码: [codesyntax lang="java"]
/**
* surenpi.com
*/
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
/**
* @author surenpi.com
* @since jdk1.6
* 2015年8月25日
*/
public class Test {
public static void main(String[] args) throws Exception{
MulticastSocket multiSocket = new MulticastSocket(8080);
int length = 1024;
byte[] buf = new byte[length];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
while(true)
{
multiSocket.receive(packet);
System.out.println(new String(packet.getData()));
}
}
}
[/codesyntax]
[codesyntax lang="python"]
import socket
HOST = ''
PORT = 8080
ADDR = (HOST, PORT)
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
server.bind(ADDR)
server.sendto('hello', ('255.255.255.255', 8080))
while True:
try:
data = server.recvfrom(1023)
print data
except (KeyboardInterrupt, SystemExit):
raise
except:
server.close()
break
[/codesyntax]