我已经为了研究实现了一个带有UDP和数据报的Echo服务器 我有一个术语疑问。
如果发送DatagramPacket
我必须连接到服务器侦听端口到哪里
通过套接字发送它为什么有些书说UDP是无连接协议?
需要连接还是我不理解?
感谢。
答案 0 :(得分:2)
在这种情况下,“无连接”是指UDP不进行握手以建立连接。此外,除非服务器协议已设计为发送,否则不会确认收到发送的数据包。
虽然DatagramSocket
有连接方法,但API说明:
“如果套接字所连接的远程目标不存在,或者无法访问,并且如果已收到该地址的ICMP目标不可达数据包,则后续调用发送或接收可能会抛出PortUnreachableException。注意,那里不能保证会抛出异常。“
因此,您可以将数据发送到某个地址,并且没有任何迹象表明实际上没有连接。
答案 1 :(得分:1)
无连接意味着接收服务器不存储连接状态,并且您没有从接收服务器获得响应(确认或错误)。
但是,通信通常是通过端口/套接字,您需要本地端口和远程端口。
答案 2 :(得分:1)
UDP是一种无连接协议。您不需要/无法连接以使用UDP。但是,如果您需要形成连接,我建议您使用TCP。
编辑:DatagramSocket有一个连接方法,但它所做的只是
将套接字连接到此套接字的远程地址。当套接字连接到远程地址时,只能将数据包发送到该地址或从该地址接收数据包。默认情况下,未连接数据报套接字。
它没有建立连接。