Java UDP 数据报包

标签 java udp

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

如果要发送DatagramPacket,我必须连接到服务器,监听端口 通过套接字发送为什么有些书说UDP是无连接协议(protocol)?

需要连接还是我不明白什么?

谢谢。

最佳答案

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

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

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

关于Java UDP 数据报包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5218000/

相关文章:

java - 如何强制Jetty重新编译jsp servlet

linux - Zynq 7000 上的嵌入式 Linux,丢弃几乎所有 UDP 数据包

c - 在 C 程序中查找 UDP 数据有效负载中的八位字节

networking - 如何区分 UDP 广播和单播?

flash - 为什么 Silverlight 或 Flash 不实现 UDP 套接字?

java - JTextPane 仅显示单行插入的组件

java - 滚动 listView 时 ListView 项目的背景变得困惑

java - 在映射键集流上应用带有 anyMatch() 的谓词,并在谓词为假时返回一些结果

java - 将字符串数据 append (添加)到 Android 应用程序中的 SD 卡文本文件

sockets - 使用 LuaSocket 通过 LAN 发送 UDP 数据包