gpt4 book ai didi

c++ - 如何绑定(bind)到多个接口(interface)上的同一个 UDP 端口

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:30:00 25 4
gpt4 key购买 nike

我有两个网络接口(interface),并试图绑定(bind)到它们两个上的同一个 UDP 端口,但是当我尝试绑定(bind)到第二个接口(interface)时出现错误,EADDRINUSE。当我绑定(bind)到套接字时,我传递了一个 sockaddr*,我在其中设置了端口和要使用的唯一 IP 地址。

我必须使用套接字选项 SO_REUSEADDR 吗?这会允许在任一套接字上接收消息,还是会将它们发送到与其绑定(bind)的 IP 地址相匹配的套接字?

最佳答案

您可以 bind(2)一个 socket 到 INADDR_ANY for IPv4或到 in6addr_any 以获得 IPv6 (您不必这样做,但这是通常的方法)。这将使单个套接字能够接受来自盒子上所有网络接口(interface)的数据包。

然后 SO_REUSEADDR 套接字选项将允许您将其他套接字绑定(bind)到更具体地址,即绑定(bind)到单独的接口(interface)和相同的端口。

数据包将在绑定(bind)到与给定数据包的目标 IP 地址最匹配的地址的套接字上接收。

关于c++ - 如何绑定(bind)到多个接口(interface)上的同一个 UDP 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13505483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com