java SE基础(UDP通信)

        1。java支持的UDP数据报通信需要DatagramPacket和DatagramSocket两个类的配合。DatagramPacket类将待传输数据封装成数据报包对象,
            再由数据报套接字DatagramSocket类提供的send()和receiver()方法进行发送或接收操作。
            
        2。DatagramPacket类:
        (1)构造方法*/
            public DatagramPacket(byte[] buffer , int length , InetAddress IP , int port){}
/*            创建待发送的数据报包对象,必须指定目标主机的IP地址和端口。其中,包长度length <= buffer.length。*/
            
            public DatagramPacket(byte[] buffer , int length){}
/*            创建待接收的数据报包对象,指定接收到的数据报包的缓存地址与接收数据包长度,其中length <= buffer.length。*/

/*        (2)操作方法*/
            public byte[] getData(){}        //返回数据缓冲区。接收到的或将要发送的数据从缓冲区中的偏移量 offset 处开始,持续 length 长度
            
/*        3。DatagramSocket类:提供数据报包的发送与接收服务
        (1)构造方法*/
            public DatagramSocket(){}        //构造数据报套接字,用来发送数据报包
            
            public DatagramSocket(int port){}//创建数据报套接字并将其绑定到本地主机上的指定端口,用来接收数据报包
            
/*        (2)操作方法*/
            public void receive(DatagramPacket p){}        //从此套接字接收数据报包
                //其中,在接收到数据报包之前,receive方法处于阻塞状态
            
            public void send(DatagramPacket p){}        //从此套接字发送数据报包
            
            public void close(){}                        //关闭数据报套接字

        /*例如*/

public class UDPSender {
	public static final int RECEICER_PORT = 3306;			//目标主机端口号
	
	public static void main(String[] args) throws IOException {
		byte[] buffer = new byte[128];					//发送数据缓冲区
		int length = 128;										//缓冲区有效长度

		String str = "hello this is a test of the udp communication";
		buffer = str.getBytes();
		
		DatagramPacket dgp = new DatagramPacket(buffer, str.length(), InetAddress.getByName("localhost"), RECEICER_PORT);
		DatagramSocket dgs = new DatagramSocket();
		dgs.send(dgp);
		dgs.close(); 				//关闭数据包套接字
	}
}

public class UDPReceiver {
	public static final int RECEIVER_PORT = 3306;		//接收主机端口号
	
	public static void main(String[] args) throws IOException {
		byte[] buffer = new byte[128];					//定义接收缓冲区
		int length = 128;										//定义缓冲区有效长度
		
		DatagramPacket dgp = new DatagramPacket(buffer, length);		//构造DatagramPacket,用来接收长度为length的数据包
		DatagramSocket dgs =  new DatagramSocket(RECEIVER_PORT); 	//构造DatagramSocket,指定本地端口号,用来接收数据包
		
		dgs.receive(dgp);									//获取接收到的packet
		buffer = dgp.getData();							//获取packet中的缓冲区数据
		System.out.println(new String(buffer));

		dgs.close(); 					//关闭数据报套接字
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值