基于UDP的网络编程

UDP是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个连接之间并没有虚拟链路,这两个Socket只是接受发送数据的对象。
java提供了DatagramSocket对象作为基于UDP协议的Socket,使用DatagramPacket发送接收数据。
UDP主要用于实时性很强的场景比如网络游戏、视频会议
UDP协议是一种面向非连接的协议。面向非连接的协议指的是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。
对可靠性要求不高的应用。
1** 可以认为udp协议的socket类似于码头,数据报类似于集装箱;码头的作用是发送和接收集装箱,
而DatagramSocket作用则是发送、接受数据报。因此基于udp协议的通信双方没有所谓的客户端和服务器的概念。**1
udp和tcp协议简单比较如下:
*tcp协议:可靠,传输大小无限制,但是需要连接建立时间,差错控制大。
udp协议:不可靠,差错控制开销小,传输大小控制在 64kb以下,不需要建立连接。*
它的唯一作用就是接收和发送数据报。java使用DatagramPacket来代表数据报,datagrampacket的接收和发送都是通过datagramsocket来完成的。
当服务器端(也可以是客户端)接收到一个datagrampacket对象时,如果想向数据发送者“反馈”一些信息,但由于udp协议是面向非连接的,他也不知道是每个数据报由谁发过来,但程序可以调用datagrampacket的如下3个方法来获取发送者的ip地址和端口号。
->IntetAddress getAddress();当程序准备发送次数据包时,该方法返回数据报的目标ip地址;当程序刚接收到一个数据报时,该方法返回该数据报的发送数据报的发送主机的ip地址。
->int getPort();同理,自行脑部。
->SocketAddress getSocket(); SocketAddress里面封装了一个端口号和一个ip地址,解释同上。
简单的使用例子地址:https://github.com/happycodinggirl/TestUDPSocket.git
注:以上理论知识来源于《疯狂java讲义》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值