为了研究,我已经实现了一个带有 UDP 和数据报的 Echo 服务器,但是 我对术语有疑问。
如果要发送DatagramPacket
,我必须连接到服务器,监听端口
通过套接字发送为什么有些书说UDP是无连接协议(protocol)?
需要连接还是我不明白什么?
谢谢。
最佳答案
在这种情况下,“无连接”是指 UDP 不进行握手来建立连接。此外,除非服务器协议(protocol)被设计为发送数据包,否则不会确认收到所发送的数据包。
虽然 DatagramSocket
有一个 connect 方法,但 API 声明:
“如果套接字连接的远程目标不存在,或者无法访问,并且已收到该地址的 ICMP 目标无法访问数据包,则后续的发送或接收调用可能会抛出 PortUnreachableException。注意,有不保证会抛出异常。”
因此,您有可能将数据发送到某个地址,但没有任何迹象表明实际上没有连接。
关于Java UDP 数据报包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5218000/