Udp 接收端和发送端的实现

/*
     * Udp发送数据
     *
     * 1、建立Udp Socket 服务
     * 2、提供数据,并将数据封装到包中
     * 3、通过Socket的数据发送功能,将数据包发送出去
     * 4、关闭资源
     */

package com.langsin.udp;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class UdpSend {
    
    public static void main(String[] args) throws Exception {
        //1
        DatagramSocket ds=new DatagramSocket(11002);   //这里可以指定发送端的端口号,否则系统将自动分配  
        //2
        byte[] buf="Hello World!!".getBytes();
        DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.197"),10000 );
        //3
        ds.send(dp);
        //4
        ds.close();
    }

}

/*
 * Udp的接受

 *
 * 1、建立Udp 的 Socket 服务
 * 2、定义一个数据包用于存储接收到的字节数据
 * 3、通过socket 的 receive 方法将接收到的数据存储到数据包中
 * 4、通过数据包的特有功能,将这些数据取出
 * 5、关闭资源
 *
 */

package com.langsin.udp;

import java.net.DatagramPacket;
import java.net.DatagramSocket;


public class UdpRece {
    public static void main(String[] args) throws Exception{
        //1
        DatagramSocket ds=new DatagramSocket(10000);
        //2
        byte[] buf=new byte[1024];
        DatagramPacket dp=new DatagramPacket(buf, buf.length);
        //3
        ds.receive(dp);
        //4
        String ip=dp.getAddress().getHostAddress();
        int port=dp.getPort();   //得到发送端的端口号
        String data=new String(dp.getData(),0,dp.getLength());
        System.out.println(ip+"  "+data+"  "+port);
        //5
        ds.close();
        
    }

}

因为udp 的不可靠传输,所以接收端如果接收不到数据包,数据就会被丢弃,因此应该先运行接收端。

原文地址:https://www.cnblogs.com/wintersong/p/5705296.html