UDP接收数据
接收数据的步骤如下 1、使用带参构造方法创建接收端的Socket对象(DatagramSocket)
xxxxxxxxxx
DatagramSocket(int port) //即指定端口
2、创建一个数据包,用于接收数据。使用的是DatagramPacket类里面的构造方法DatagramPacket(byte[] buf, int length) 用于接收长度为 length数据包
DatagramPacket(byte[] buf, int length)
3、调用DatagramSocket对象的方法接收数据
xxxxxxxxxx
void receive(DatagramPacket)
4、解析数据包,并把数据在控制台显示
xxxxxxxxxx
byte[] getData[]
int getLength()
5、关闭接收端
x
void close()
如何操作:先启动接收端,再启动发送端
UDP接收数据的练习
xxxxxxxxxx
package 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();
}
}
xxxxxxxxxx
package 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();
}
}