首页 > 代码库 > java 25 - 4 网络编程之 UDP协议传输思路
java 25 - 4 网络编程之 UDP协议传输思路
UDP传输
两个类:DatagramSocket与DatagramPacket(具体看API)
A:建立发送端,接收端。
B:建立数据包。
C:调用Socket的发送接收方法。
D:关闭Socket。
E:发送端与接收端是两个独立的运行程序。
UDP传输-发送端思路
UDP发送数据:
A:创建Socket发送端对象
B:创建数据报包(把数据打包)
C:调用Socket对象发送数据报包
D:释放资源(底层是IO流)
UDP传输-发送端代码
1 public static void main(String[] args) throws IOException { 2 // A:创建发送端Socket对象 3 // DatagramSocket():此类表示用来发送和接收数据报包的套接字。 4 DatagramSocket ds = new DatagramSocket(); 5 6 // B:创建数据,并把数据打包 7 // DatagramPacket(byte[] buf, int length, InetAddress address, int port) 8 // 创建数据 9 byte[] bys = "UDP发送端".getBytes();10 // 数据长度11 int length = bys.length;12 13 // 创建IP地址对象14 InetAddress address = InetAddress.getByName("172.19.xx.xx");15 16 // 创建端口17 int port = 10010;18 19 //把数据进行打包20 DatagramPacket dp = new DatagramPacket(bys,length,address,port);21 22 // C:调用Socket对象的发送方法发送数据包23 // public void send(DatagramPacket p) 数据报包用来实现无连接包投递服务24 ds.send(dp);25 26 //D:释放资源27 ds.close();28 }29 30 }
UDP传输-接收端思路
UDP接收数据:
A:创建Socket接收端对象
B:创建一个数据报包来接收数据(创建容器)
C:调用Socket对象的方法来接收数据报包
D:解析数据包(byte转换成String),并打印在控制台
E:释放资源
UDP传输-接收端代码
1 public class ReceiveDemo { 2 public static void main(String[] args) throws IOException { 3 // 创建接收端Socket对象 4 // DatagramSocket(int port) 5 DatagramSocket ds = new DatagramSocket(10010); 6 7 // 创建一个数据包(接收容器) 8 // DatagramPacket(byte[] buf, int length) 9 byte[] bys = new byte[1000];10 int length = bys.length;11 DatagramPacket dp = new DatagramPacket(bys, length);12 13 // 调用Socket对象的接收方法接收数据14 // public void receive(DatagramPacket p)15 ds.receive(dp); // 阻塞式16 17 // 解析数据包,并显示在控制台18 // 获取对方的ip19 // public InetAddress getAddress()20 InetAddress address = dp.getAddress();21 String ip = address.getHostAddress();22 // public byte[] getData():获取数据缓冲区23 // public int getLength():获取数据的实际长度24 byte[] bys2 = dp.getData();25 int len = dp.getLength();26 String s = new String(bys2, 0, len);27 System.out.println(ip + "传递的数据是:" + s);28 29 // 释放资源30 ds.close();31 }32 }
注意:因为UDP接收端是阻塞式接收,所以先启动接收端,再启动发送端。
UDP协议发送和接收数据的图解:
java 25 - 4 网络编程之 UDP协议传输思路
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。