您的位置:首页 > 其它

UDP通信

2014-09-04 00:42 78 查看
UDP通信是一个不可靠协议,只管发送不管是否收到,但效率高。

TCP是可靠通信协议,采用一问一答的可靠模式,但效率低。

DatagramPacket:UDP数据报,是基于IP建立的,每台主机有65536个端口号可使用,

数据报的字节限制为65536 - 8(头信息)。

DatagramSocket:用于监听固定端口的报文

客户端向服务端发送数据的步骤:

(1)创建用于发送数据的实例

DatagramSocket socket = new DatagramSocket();

(2)准备数据,将字符串转化为字节数组。

(3)创建数据包(打包:准备包裹,填写想、地址,装入数据),将数据存入包中

InetAdress getByName(String ip):获取服务端ip

DatadramPacket(byte[] buf,int len,InetAddress address,int port)

从buf数组取len长度数据来创建数据包对象,将数据发送到address地址,port端口

DatadramPacket(byte[] buf,int offset,int len,InetAddress address,int port)

将从buf数组第offset位置开始的len个数据发送到address地址,port端口

(4)将数据包通过Socket发送到服务端

send(DatagramPacket dp):发送报文到dp

服务端接收包的步骤:

(1)创建接收包的实例socket,并固定监听port端口报文

DatagramSocket(int port):固定监听port端口

(2)创建接收包,大小应当合适

DatagramPacket(byte[] buf,int len):将len长度的数据装入buf数组中

DatagramPacket(byte[] buf,int offset,int len):将数据包中从offset开始的len长度的数据装入buf数组中

(3)通过socket接收到数据包

receive(DatadramPacket d):接收数据报到d中。该方法是一个阻塞方法,会一直等到有数据被读到才畅通

(4)使用DatagramPacket的方法拆包取数据

byte[] getData():取数据

int getLength():有效数据的长度

InetAddress getAddress():获取客户端地址

int getPort():获取客户端端口号
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐