JAVA实现一个UDP客户端

UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

微信图片_20181203111500.png

import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.DatagramSocket;
public class UdpClient
{private byte[] udpbuf= new byte[4096];

	private static DatagramPacket clientPacket = null;
	private static DatagramSocket udpClient=null;
  public UdpServer(String host,int port)
  {
    udpClient = new DatagramSocket();
    clientPacket = new DatagramPacket(new byte[0], 0, InetAddress.getByName(host), port);
    clientPacket.setData("connect request".getBytes());
    udpClient.send(clientPacket);

    byte[] buffer =null; 
    int size=0;
    while(true)
    {
      udpClient.receive(inPacket);
      size=inPacket.getLength();
      buffer=new byte[size];
     System.arraycopy(inPacket.getData(),0,buffer,0,size);
     OnMessage(buffer);
    }
   }

   private void OnMessage(byte[] messages)
   {//do something that you want
   }
}