UDP发送接收数据

package NetworkProgramming.UDP.DatagramSocketDemo;

import java.io.IOException;
import java.net.*;
import java.nio.charset.StandardCharsets;

/**
* FileName: SendDemo
* Author: lps
* Date: 2022/4/1 14:11
* Sign:刘品水 Q:1944900433
*
* void receive(DatagramPacket p)
* 接收数据报包从这个插座。
* void send(DatagramPacket p)
* 从这个套接字发送数据报包。
* DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)
* 发送有偏置 ioffsetto指定端口号指定主机上的数据包长度 length数据报包结构。
*/
public class SendDemo {
public static void main(String[] args) throws IOException {
//DatagramSocket()
//构建一个数据报套接字绑定到本地主机的任何可用的端口。
DatagramSocket ds = new DatagramSocket();
InetAddress address = InetAddress.getByName("lps");
//创建数据 并且打包
//DatagramPacket(byte[] buf, int length, InetAddress address, int port)
//指定主机上的指定端口发送数据包的长度 length数据报包结构。
//byte[] getBytes()
//这 String编码成一个序列使用平台的默认字符集字节,结果存放到一个新的字节数组。
byte [] bys="hello,java我来了".getBytes(StandardCharsets.UTF_8);
DatagramPacket dp = new DatagramPacket(bys,bys.length,address,12345);

//调用该对象方法发送数据
// * void send(DatagramPacket p)
// * 从这个套接字发送数据报包。
ds.send(dp);


//关闭发送端
//void close()
//关闭该数据报套接字。
ds.close();


}
}

package NetworkProgramming.UDP.DatagramSocketDemo;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

/**
* FileName: ReceiveDemo
* Author: lps
* Date: 2022/4/1 14:11
* Sign:刘品水 Q:1944900433
*/
public class ReceiveDemo {
public static void main(String[] args) throws IOException {
//DatagramSocket(int port)
//构建一个数据报套接字绑定到本地主机的指定端口。
DatagramSocket ds = new DatagramSocket(12345);
//DatagramPacket(byte[] buf, int length)
//接收数据包长度 length DatagramPacket构建。

byte[] bys = new byte[1024];

DatagramPacket dp = new DatagramPacket(bys,bys.length);



//void receive(DatagramPacket p)
//接收数据报包从这个插座。
ds.receive(dp);
//System.out.println(dp.toString());

//解析数据包
//byte[] getData()
//返回数据缓冲区。
byte[] data = dp.getData();
//int getLength()
//返回要发送的数据的长度或收到的数据的长度。
int len = dp.getLength();
// String dataString = new String(data,0,len);
// System.out.print("数据是:"+dataString);
System.out.println("接收到的数据是:"+new String(data,0,len));


ds.close();

}
}

 

posted @ 2022-04-01 15:32  刘品水  阅读(174)  评论(0编辑  收藏  举报