比较简单的实例,主要是方便理解用。
接收端:
public class Receiver {
public static void main(String[] args) {
DatagramSocket socket = null;
DatagramPacket pack = null;
try {
// 创建数据报套接字并将其绑定到本地主机上的指定端口
socket = new DatagramSocket(8089);
// 构造 DatagramPacket,用来接收长度为 length 的数据包。
pack = new DatagramPacket(new byte[1024], 1024);
// 从此套接字接收数据报包。
socket.receive(pack);
// 返回数据缓冲区到字节数组
byte[] content = pack.getData();
// 将字节数据组成新的字符串
String s = new String(content, 0, pack.getLength());
System.out.println(s);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (socket != null) {
socket.close();
}
}
}
}
发送端:
public class Sender {
public static void main(String[] args) {
DatagramSocket socket = null;
DatagramPacket pack = null;
try {
// 构造数据报套接字并将其绑定到本地主机上任何可用的端口
socket = new DatagramSocket();
String s = "hello world!";
byte[] bytes = s.getBytes();
// 获取本机的ip地址
InetAddress address = InetAddress.getByName(InetAddress
.getLocalHost().getHostAddress());
// 向指定的ip 端口发送一定长度的字节数组。
pack = new DatagramPacket(bytes, bytes.length, address, 8089);
// 发送数据
socket.send(pack);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (socket != null) {
socket.close();
}
}
}
}
注意:
1.数据报传输的数据是字符数组,有固定的长度。