httpbin - 协议调试工具
httpstatuses - 协议状态码查询
httpie - cURL-like tool for humans
Fiddler
bfjm
V2EX  ›  HTTP

一个 udp 的疑问

  •  
  •   bfjm · Oct 10, 2023 via iPhone · 2930 views
    This topic created in 966 days ago, the information mentioned may be changed or developed.
    客户端的绑定了端口 5000 ,向服务端的端口 4433 发送了消息,服务端绑定并向客户端 connect ,收发消息正常,但是客户端关闭原来的 fd ,重新绑定了新的端口 6000 ,给服务端发送消息,服务端还能从原来的 fd 上读取消息, 为啥不是当成一个新的客户端呢? 从抓包来看,客户端发送的 udp 包已经是重新绑定的 端口 6000
    Supplement 1  ·  Oct 12, 2023
    破案了 服务端地址需要绑定 INADDR_ANY
    10 replies    2023-10-11 13:23:55 +08:00
    heiher
        1
    heiher  
       Oct 11, 2023 via Android
    只要绑定了端口,就能收到任意来源向这个端口的发送的消息呀。
    yulon
        2
    yulon  
       Oct 11, 2023
    你用 TCP 的时候不用 Accept 吗,你看 UDP 有用过 Accept 吗
    ho121
        3
    ho121  
       Oct 11, 2023 via Android
    Udp 客户端不需要绑定端口,除非对端口有特殊要求。
    Udp 没有链接的概念,所以服务端向客户端 connect 是什么鬼。
    因为 Udp 没有链接的概念,所以服务端只需要一个 fd 就能处理所有请求,单从 udp 的角度也无法区分客户端是不是同一个。
    不要用 tcp 的角度试图理解 udp ,他们就不是一种东西。
    bfjm
        4
    bfjm  
    OP
       Oct 11, 2023 via iPhone
    zhng920823
        5
    zhng920823  
       Oct 11, 2023
    @bfjm 这是打算实现 HTTP/3 嘛
    yulon
        6
    yulon  
       Oct 11, 2023
    @bfjm 所以你看过这篇文章,也给 UDP 实现了 Accept ,那怎么可能还会出现顶楼的问题呢?
    bfjm
        7
    bfjm  
    OP
       Oct 11, 2023 via iPhone
    @zhng920823 是的
    bfjm
        8
    bfjm  
    OP
       Oct 11, 2023 via iPhone
    @yulon 现在是另一个问题了 客户端主动更换 port 服务端检测不到呢
    bfjm
        9
    bfjm  
    OP
       Oct 11, 2023 via iPhone
    @yulon 没有当成一个新的客户端
    zhng920823
        10
    zhng920823  
       Oct 11, 2023
    @bfjm 用 recvfrom 看看客户端的端口到底是多少,客户端更换后有没有变化, 按说绑定了四元组后不应出现这个问题
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5028 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 09:42 · PVG 17:42 · LAX 02:42 · JFK 05:42
    ♥ Do have faith in what you're doing.