Java UDP DatagramPacket

时间:2011-03-07 09:37:09

标签: java udp

我已经为了研究实现了一个带有UDP和数据报的Echo服务器 我有一个术语疑问。

如果发送DatagramPacket我必须连接到服务器侦听端口到哪里 通过套接字发送它为什么有些书说UDP是无连接协议?

需要连接还是我不理解?

感谢。

3 个答案:

答案 0 :(得分:2)

在这种情况下,“无连接”是指UDP不进行握手以建立连接。此外,除非服务器协议已设计为发送,否则不会确认收到发送的数据包。

虽然DatagramSocket有连接方法,但API说明:
“如果套接字所连接的远程目标不存在,或者无法访问,并且如果已收到该地址的ICMP目标不可达数据包,则后续调用发送或接收可能会抛出PortUnreachableException。注意,那里不能保证会抛出异常。“

因此,您可以将数据发送到某个地址,并且没有任何迹象表明实际上没有连接。

答案 1 :(得分:1)

无连接意味着接收服务器不存储连接状态,并且您没有从接收服务器获得响应(确认或错误)。

但是,通信通常是通过端口/套接字,您需要本地端口和远程端口。

答案 2 :(得分:1)

UDP是一种无连接协议。您不需要/无法连接以使用UDP。但是,如果您需要形成连接,我建议您使用TCP。

编辑:DatagramSocket有一个连接方法,但它所做的只是

  

将套接字连接到此套接字的远程地址。当套接字连接到远程地址时,只能将数据包发送到该地址或从该地址接收数据包。默认情况下,未连接数据报套接字。

它没有建立连接。