客户端发送"我是爸爸我是爸爸我是爸爸我是爸爸我是爸爸我"
/**
* UDP:使用DatagramSocked类定义连接件通道
* 使用DatagramPacket储存
*/
@Test
//这是客户端
public void testClient() throws IOException {
//设置通道
DatagramSocket datagramSocket = new DatagramSocket();
//发送"我是爸爸"给服务器
String s = "我是爸爸我是爸爸我是爸爸我是爸爸我是爸爸我";
//存入数组,使用DatagramPacket装起来
//你发多少我都会存储
byte[] bytes = s.getBytes();
DatagramPacket datagramPacket = new DatagramPacket(bytes, 0, bytes.length, InetAddress.getByName("10.212.10.194"), 8899);
//发送出去
//void send(DatagramPacket p)
//从此套接字发送数据报包。
datagramSocket.send(datagramPacket);
//关闭
datagramSocket.close();
}
服务端接受"我是爸爸我是爸爸我是爸爸我是爸爸我是爸爸我"
@Test
//这是服务端
public void testServer() throws IOException {
//设置端口
DatagramSocket datagramSocket = new DatagramSocket(8899);
//你发的多了,我这边可能接收不完全,数组容量不够,所以会有限制字数的条件
byte[] bytes = new byte[1024];
DatagramPacket datagramPacket = new DatagramPacket(bytes, 0, bytes.length);
//void setLength(int length)
//设置此数据包的长度。长度不能大于定义的数组的长度
datagramPacket.setLength(1024);
//接收发送过来的数据存储到datagramPacket里
//void receive(DatagramPacket p)
//从此套接字接收数据报包。
datagramSocket.receive(datagramPacket);
//byte[] getData()
//返回数据缓冲区。
//int getLength()
//返回要发送的数据的长度或接收的数据的长度。
//输出结果:我是爸爸我是爸爸我是爸爸我是爸爸我是爸爸我
System.out.println(new String(datagramPacket.getData(), 0, datagramPacket.getLength()));
datagramSocket.close();
}
附加:服务端不开启,客户端也就可以发送数据
但是,服务端接受到不到数据,也不会报错,这是UDP
相反的TCP,服务端不开启,客户端发送数据会报错,必须服务端先运行