UDP接受数据发送数据
UDP发送数据的步骤:
- 创建发送端的Socket对象(DatagramSocket)
- 创建数据,并将数据打包
- 调用DatagramSocket对象的方法发送数据
- 关闭发送端
看代码演示:
package UDP;
import java.io.IOException;
import java.net.*;
public class SendDemo {
public static void main(String[] args) throws IOException{
//创建发送端的Socket对象(DatagramSocket)
DatagramSocket ds=new DatagramSocket();
//创建数据,并将数据打包
//DatagramPacket(byte[] buf,int length,InetAddress address,int port)
//构造一个数据包,发送长度为length的数据包到指定主机上的指定端口号
byte[] bys="hello,udp".getBytes();
int len=bys.length;
InetAddress address=InetAddress.getByName("192.168.223.1");
int port=10086;//端口号
DatagramPacket dp=new DatagramPacket(bys,len,address,port);
//调用DatagramSocket对象的方法发送数据
//void send(DatagramSocket p) 从此套接字发送数据包
ds.send(dp);
//关闭发送端
ds.close();
}
}
UDP接收数据的步骤:
- 创建接受端的Socket对象(DatagramSocket)
- 创建数据包,用于接受数据
- 调用DatagramSocket对象的方法接收数据
- 关闭发送端
直接看代码:
package UDP;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class RecriveDemo {
public static void main(String[] args) throws IOException{
//创建接受端的Socket对象(DatagramSocket)
//DatagramSocket(int port)构造数据报套接字并将其绑定到本地主机的指定端口
DatagramSocket ds=new DatagramSocket(10086);
//创建数据包,用于接受数据
//DatagramPacket(byte[] buf,int length)构造一个DatagramPacket用于接受长度为lenth数据包
byte[] bys=new byte[1024];
DatagramPacket dp=new DatagramPacket(bys, bys.length);
//调用DatagramSocket对象的方法接收数据
ds.receive(dp);
//解析数据包,并把数据在控制台显示
//byte[] getData()返回数据缓冲区
byte datas[]=dp.getData();
//int getlength()返回要发送的数据的长度或接收到的数据长度
int len=dp.getLength();
String dataString=new String(datas,0,len);
System.out.println("数据是:"+dataString);
//关闭发送端
ds.close();
}
}
这里IP地址是我本机IP,也就是发送给自己数据,然后接收端来接受,就可以接收到发送的数据"hello,udp"