java-UDP协议接收和发送数据

UDP发送数据的步骤:
  A:创建发送端的Socket服务对象

  B:创建数据,并把数据打包

  C:通过Socket对象的发送功能发送数据包

  D:释放资源

public class SendDemo {
    public static void main(String[] args) throws IOException {
        //创建发送端的Socket服务对象
        //public DatagramSocket()
        DatagramSocket ds = new DatagramSocket();
        
        //创建数据,并把数据打包
        //public DatagramPacket(byte[] buf,int Length,InetAddress address,int port)
        //buf其实就是要发送的数据信息
        //length表示要发送的数据长度
        //address数据要发到哪里去,对应的哪个IP地址对象
        //port端口号
        //byte[] bys = "***".getBytes();
        //int length = bys.length;
        //InetAddress address = InetAddress.getByName("***.***.**.***");
        //int port = 10086;
        //DatagramPacket p = new DatagramPacket(bys,length,address,port);
        
        //封装键盘录入
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line = null;
        while((line = br.readLine())!= null) {
            byte[] bys = line.getBytes();
            DatagramPacket dp = new DatagramPacket(bys, bys.length, InetAddress.getByName("000.000.00.000"), 10010);
            
            //通过Socket对象的发送功能发送数据包
            //public void send(DatagramPacket p)
            ds.send(dp);
        }
          
        //释放资源
        ds.close();
    }
}

UDP接收数据的步骤:

  A:创建接收端的Socket服务对象

  B:创建一个数据包,用于接收数据

  C:接收数据

  D:解析数据,并显示在控制台

  E:释放资源

public class ReceiveDemo {
    public static void main(String[] args) throws IOException {
        //创建接收端的Socket服务对象,并且指定端口号
        DatagramSocket ds = new DatagramSocket(10010);
        while(true){
            //创建一个数据包,用于接收数据
            byte[] bys = new byte[1024];
            DatagramPacket dp = new DatagramPacket(bys, bys.length);
            
            //接收数据
            ds.receive(dp);
            
            //解析数据
            //获取ip地址
            String ip = dp.getAddress().getHostAddress();
            
            //获取数据
            String data = new String(dp.getData(),0,dp.getLength());
            System.out.println("from " + ip + " data is " + data);
        }
        
        //释放资源(服务器一般永远是开着的)
        //ds.close();
    }
}

原文地址:https://www.cnblogs.com/mxj961116/p/10401198.html