sockets - 如何绑定(bind)到正确的地址和端口以进行 UDP 通信?

标签 sockets networking

我已经建立了一个局域网,路由器在 192.168.1.1,我在 192.168.1.10 有硬件,它正在向 192.168.1.105:14455 发送 UDP 数据包。

我的电脑也在这个局域网中。它的IP地址是由路由器随机分配的。我想在 192.168.1.10 收听从我的硬件发送的数据包。

目前,我将 PC 的地址设置为 192.168.1.105 并绑定(bind)到 0.0.0.0:14455。

但是,如果我不绑定(bind)到 0.0.0.0 来监听所有地址,那么我应该绑定(bind)到哪个地址 (x.x.x.x:14455) 来监听我的硬件?

此外,如果我要求硬件通过网络进行广播。我应该如何绑定(bind)我的电脑(x.x.x.x:14455?)?

最佳答案

对于单播,您应该绑定(bind)到 INADDR_ANY,或者绑定(bind)到发送方使用的特定 IP 地址(仅当您在 PC 上拥有多个 IP 时)。对于广播,您应该始终绑定(bind)到 INADDR_BROADCAST,否则您可能看不到广播数据包,具体取决于实现。

关于sockets - 如何绑定(bind)到正确的地址和端口以进行 UDP 通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34454220/

相关文章:

c++ - 可扩展的 PPP 协议(protocol)。需要有关状态机的帮助

networking - 如何使用 docker-compose+docker-swarm+overlay 网络发现缩放的容器主机?

.net - 为什么即使在 NetworkStream.EndRead 返回 0 字节后我仍然接收数据?

c - C 语言的服务器客户端聊天应用程序

node.js - 监听 UNIX 域套接字的 WebSockets?

java - tcp端口在java中接收数据很慢,但在php中接收数据很快

c# - 仅在高延迟网络上的 WCF/TLS 服务中的 SecurityNegotiationException

docker - CORS 在带有 NGINX 的 Docker-Compose 堆栈中的某处失败 - 找不到它

python - 优雅地杀死一个孤立的套接字

python - 更改已运行的服务器的套接字端口(python)