【问题标题】:Is it possible to receive UDP packets only from a specified source address?是否可以仅从指定的源地址接收 UDP 数据包?
【发布时间】:2017-04-28 01:09:21
【问题描述】:

我知道recvfrom 可以通过指针参数返回源地址,这样我就可以检查接收到的数据包是否来自我感兴趣的地址。除了仅在数据包已经收到了吗?

【问题讨论】:

    标签: sockets udp recvfrom


    【解决方案1】:

    是的。只需将您的套接字连接到所需的源地址。来自任何其他地址的数据报都将被丢弃。

    【讨论】:

    • 谢谢。我可以用指定的 IP 地址和任何端口号“连接”一个对等点吗?我的意思是,我不想指定端口号,因为我不知道对等方在向我发送数据包时可能用作源端口号的端口号。
    • 您会在收到来自该来源的数据报后立即知道。我不相信 UDP 连接支持 ANY 端口选项。
    【解决方案2】:

    这取决于语言。例如,Java 的 DatagramSocket 有一个connect method,它丢弃所有不属于指定地址的数据包。它确实会检查源地址是否来自您所说的指定地址。这就是 UDP 堆栈的工作原理。

    【讨论】:

    • BSD Sockets API 有connect() 方法,它以我知道的所有语言公开。
    猜你喜欢
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2010-12-09
    • 2011-07-13
    相关资源
    最近更新 更多