前言
UDP协议与TCP相比,速度更快,效率更高,但是是无连接的协议,不可靠。在线聊天、播放视频时可以采用UDP协议,我们平时最常使用的Ping命令也是采取的UDP协议,接下来让我们看看在Java网络编程中如何使用UDP协议在两台计算机之间实现数据的发送与接收吧。
发送方
import java.io.IOException;
import java.net.*;
public class UDPClient {
public static void main(String[] args) throws IOException {
System.out.println("Client");
DatagramSocket client=new DatagramSocket(8888);
String data="Hi Server";
byte[] datas=data.getBytes();
DatagramPacket packet=new DatagramPacket(datas, 0, datas.length, new InetSocketAddress("127.0.0.1",9999));
client.send(packet);
client.close();
}
}
因为采用的是UDP协议实现数据的发送与接收,所以这里采用了DatagramSocket类作为数据传输的载体,DatagramSocket用于无连接的数据包投递。
接收方
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UDPServer {
public static void main(String[] args) throws IOException {
System.out.println("Server");
DatagramSocket server=new DatagramSocket(9999);
byte[] container=new byte[1024*64];
DatagramPacket packet=new DatagramPacket(container,0,container.length);
server.receive(packet);
byte[] datas=packet.getData();
int len=packet.getLength();
System.out.println(new String(datas, 0, len));
server.close();
}
}
因为在计算机网络中,数据的传输都是以二进制的比特流进行传输的,所以在数据的发送与接收中,我们都是把要传输的内容转换成了二进制的形式。在接收方中,限定了数据接收的最大容量为64*1024字节(即64kb),如果超出了这个容量会截断后续的内容。
提示
先启动接收方,再启动发送方,不然会显示异常。