一个 udp 的疑问

213 天前
 bfjm
客户端的绑定了端口 5000 ,向服务端的端口 4433 发送了消息,服务端绑定并向客户端 connect ,收发消息正常,但是客户端关闭原来的 fd ,重新绑定了新的端口 6000 ,给服务端发送消息,服务端还能从原来的 fd 上读取消息, 为啥不是当成一个新的客户端呢? 从抓包来看,客户端发送的 udp 包已经是重新绑定的 端口 6000
1071 次点击
所在节点    HTTP
10 条回复
heiher
213 天前
只要绑定了端口,就能收到任意来源向这个端口的发送的消息呀。
yulon
213 天前
你用 TCP 的时候不用 Accept 吗,你看 UDP 有用过 Accept 吗
ho121
213 天前
Udp 客户端不需要绑定端口,除非对端口有特殊要求。
Udp 没有链接的概念,所以服务端向客户端 connect 是什么鬼。
因为 Udp 没有链接的概念,所以服务端只需要一个 fd 就能处理所有请求,单从 udp 的角度也无法区分客户端是不是同一个。
不要用 tcp 的角度试图理解 udp ,他们就不是一种东西。
bfjm
213 天前
zhng920823
213 天前
@bfjm 这是打算实现 HTTP/3 嘛
yulon
213 天前
@bfjm 所以你看过这篇文章,也给 UDP 实现了 Accept ,那怎么可能还会出现顶楼的问题呢?
bfjm
213 天前
@zhng920823 是的
bfjm
213 天前
@yulon 现在是另一个问题了 客户端主动更换 port 服务端检测不到呢
bfjm
213 天前
@yulon 没有当成一个新的客户端
zhng920823
213 天前
@bfjm 用 recvfrom 看看客户端的端口到底是多少,客户端更换后有没有变化, 按说绑定了四元组后不应出现这个问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/980807

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX