UDP接收数据
接收数据的步骤如下 1、使用带参构造方法创建接收端的Socket对象(DatagramSocket)
xxxxxxxxxxDatagramSocket(int port) //即指定端口2、创建一个数据包,用于接收数据。使用的是DatagramPacket类里面的构造方法DatagramPacket(byte[] buf, int length) 用于接收长度为 length数据包
DatagramPacket(byte[] buf, int length)3、调用DatagramSocket对象的方法接收数据
xxxxxxxxxxvoid receive(DatagramPacket)4、解析数据包,并把数据在控制台显示
xxxxxxxxxxbyte[] getData[]int getLength()5、关闭接收端
x
void close()
如何操作:先启动接收端,再启动发送端
UDP接收数据的练习
xxxxxxxxxxpackage ch22;
import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.Inet4Address;
public class a_7_1测试_发送 {
public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket();
byte[] bys = "hello,udp,我来了".getBytes(); DatagramPacket dp =new DatagramPacket(bys,bys.length,Inet4Address.getByName("10.99.20.3"),20224);
ds.send(dp);
ds.close();
}
}xxxxxxxxxxpackage ch22;
import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;
public class a_7_2测试_接收 {
public static void main(String[] args) throws IOException {
//1、创建接收端的Socket对象(DatagramSocket) //使用DatagramSocket类的带参构造方法DatagramSocket(int port) 构造一个数据报套接字并将其绑定到本地主机上的指定端口 DatagramSocket ds = new DatagramSocket(20224);
//2、创建一个数据包,用于接收数据 //DatagramPacket类里面的构造方法DatagramPacket(byte[] buf, int length) 用于接收长度为 length数据包 byte[] bys = new byte[1024];//注意:如果发送端发送的数据比较大时,这里的接收端的1024也要修改大一些 DatagramPacket dp = new DatagramPacket(bys,bys.length);
//3、调用DatagramSocket对象的方法接收数据 ds.receive(dp);
/*//4、解析数据包,并把数据在控制台显示 //DatagramPacket类里面的方法getData() 返回数据缓冲区,返回值是byte数组 byte[] datas = dp.getData();//拿到的是数据缓冲区的所有数据 //得到实际得到的发送端发送过来的数据长度,即用DatagramPacket类里面的方法getLength() int len = dp.getLength();//拿到的是实际的所有数据 String dataString = new String(datas,0,len);//把datas转为字符串类型 System.out.println("接收到的数据是:"+dataString);*/
//上面那部分的第4步可以合并优化一下,如下 System.out.println("接收到的数据是:"+new String(dp.getData(),0,dp.getLength()));
//5、关闭接收端 ds.close();
}}