客户端的绑定了端口 5000 ,向服务端的端口 4433 发送了消息,服务端绑定并向客户端 connect ,收发消息正常,但是客户端关闭原来的 fd ,重新绑定了新的端口 6000 ,给服务端发送消息,服务端还能从原来的 fd 上读取消息, 为啥不是当成一个新的客户端呢? 从抓包来看,客户端发送的 udp 包已经是重新绑定的 端口 6000

1 heiher Oct 11, 2023 via Android 只要绑定了端口,就能收到任意来源向这个端口的发送的消息呀。 |
2 yulon Oct 11, 2023 你用 TCP 的时候不用 Accept 吗,你看 UDP 有用过 Accept 吗 |
3 ho121 Oct 11, 2023 via Android Udp 客户端不需要绑定端口,除非对端口有特殊要求。 Udp 没有链接的概念,所以服务端向客户端 connect 是什么鬼。 因为 Udp 没有链接的概念,所以服务端只需要一个 fd 就能处理所有请求,单从 udp 的角度也无法区分客户端是不是同一个。 不要用 tcp 的角度试图理解 udp ,他们就不是一种东西。 |
4 bfjm OP |
5 zhng920823 Oct 11, 2023 @bfjm 这是打算实现 HTTP/3 嘛 |
7 bfjm OP @zhng920823 是的 |
10 zhng920823 Oct 11, 2023 @bfjm 用 recvfrom 看看客户端的端口到底是多少,客户端更换后有没有变化, 按说绑定了四元组后不应出现这个问题 |