学习NTP协议的时候,发现NTP采用UDP协议进行网络传输,故而学习一下UDP协议,本文仅针对于Java语言。
Java 网络编程使用两种协议(TCP和UDP),本文学习Java 使用UDP协议进行网络编程。
Java UDP 工作常用的类包括DatagramPacket和DataframSocket类。
DatagramPacket对象描述了自寻址包的地址信息,DataframSocket类表示客户程序和服务程序的自寻址套接字,这两个类在java.net包中。
1.DatagramPacket 类
DatagramPacket 创建一个 datagram packet.
有若干个构造参数
DatagramPacket(byte[] buf, int length)
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)
DatagramPacket(byte[] buf, int offset, int length, SocketAddress address)
DatagramPacket(byte[] buf, int length, SocketAddress address)
参看API文档。
2.DataframSocket类
DataframSocket类在客户端创建自寻址套接字与服务器进行通信连接,并发送和接受咨询者套接字。
创建客户端自寻址套接字选择DatagramSocket()
方法,而服务器端是DatagramSocket(int port)
方法。
一旦创建了DatagramSocket对象,程序就可以调用send(DatagramPacket dp)发送数据包和receive(DatagramPacket dp)接受数据包
举例:
客户端:
DatagramSocket ds = new DatagramSocket();
DatagramPacket dp =newDatagramPacket(byte[] buf, int length, InetAddress address, int port);//字节数组,长度,IP地址,端口号
ds.send(dp);
ds.receive(dp);
服务器端:
DatagramSocket ds = newDatagramSocket(int port)
;//指定接受端口号
DatagramPacket dp =newDatagramPacket(byte[] buf,int length);//不需要IP地址和端口号
ds.receive(dp);