UDP网络编程:原理、实践与可靠性保障
1. UDP测试的潜在失败情况
在进行UDP测试时,如清单5 - 2中的测试,在某些特定情况下可能会失败。尽管是在计算机的本地网络栈中读写数据包,但这些数据包仍然会受到导致UDP在节点间网络不可靠的各种因素影响。具体如下:
- 缓冲区问题 :发送或接收缓冲区满,或者可用内存不足,都可能导致数据包丢失。
- 数据包分片 :大的UDP数据包可能会被分片,这在后续章节会详细讨论。
- 无序交付 :使用多线程交付UDP数据包的操作系统可能会导致数据包无序交付。
2. 每个UDP连接都是监听器
在Go语言的 net 包中,TCP区分连接对象( TCPConn )和监听器( TCPListener )。 TCPListener 用于接受连接,并返回代表监听器端连接的对象,以便监听器向客户端发送消息。然而,UDP没有会话概念,所以不存在类似 TCPListener 的东西。这意味着在接收数据包时,代码需要进行更多的处理,必须验证发送者的地址,因为不能再默认连接对象接收到的所有数据包都来自同一个发送者。
为了测试单个UDP连接对象是否可以接收来自多个发送者的数据包,进行了以下操作:
- 创建回声服务器和客户端 :清单5 - 3展示了创建回声服务器和客户端的代码。
超级会员免费看
订阅专栏 解锁全文
1440

被折叠的 条评论
为什么被折叠?



