UDP编程

UDP编程

概述

在java 中使用udp编程,需要使用Socket,应为在使用UDP时,必须指定端口号和ip地址。注意:UDP端口和TCP端口是两套独立的端口,即一个程序使用tcp占用了一个端口不影响另一个程序使用udp占用相同的端口

服务器端

在服务器端,使用udp需要监听指定的端口,java提供了DatagramSocket来实现这个功能,代码如下
服务器使用如下语句在指定端口监听udp数据包
如果没有去他应用占据这个端口,那么监听成功,我们就使用一个无线循环来处理收到的数据包
在这里插入图片描述
要接收数据包就要准备一个byte[]缓冲区,并通过datagramPacket实现接收
在这里插入图片描述
在这里插入图片描述
当服务器收到一个或多个datagramPacket后,通常必须立刻回复一个或多个udp包,发送udp包,也是通过DatagramPacket实现的`Byte[] data=…
packet.setData(data);
ds.send(packet)

客户端

和服务器端相比,客户端使用udp时,只需向服务器端发送udp包,然后接收返回的udp包
客户端打开一个datagramPacket使用以下代码
在这里插入图片描述
在这里插入图片描述
客户端,创建DatagramPacket实例时,不需要指定端口,而是由操作系统指定一个当前未使用的端口,紧接着调用SetSoTimeout(1000)设定时间最多不会超过一秒接收到后续包,而服务器端可以无限等待
如果客户端希望向两个不同的服务器发送udp包,那么必须创建两个不同的DatagramPacket实例
客户端必须先发udp包,这样服务器才能知道客户端的地址和端口号
如果客户端认为通信结束,可以调用disconnect断开连接,注意不是真正断开连接,只是清楚了客户端的DatagramPacket实例记录的远程服务器地址端口号,这样服务器端就可以连接其他的客户端了

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值