networking - socket.recvfrom 总是返回有效地址吗?

标签 networking sockets

我正在开发一种通信协议(protocol),该协议(protocol)应该通过在本地网络上广播/多播对等方的地址来支持 self 配置。直观的方法是广播地址,但事实证明,很难可靠地找出当前计算机的本地 IP 地址(根据配置,您可能会得到“127.0.0.1”或其他无用的地址) .

另一种方法是不在广播消息中包含主机地址,而是让接收者在其套接字上调用 recvfrom,这不仅返回接收到的数据,还返回发送者的地址。据我所知,该调用在 Unix 和 Windows(我的要求之一)以及可能更多平台上都可用。我现在的问题是,在某些情况下这可能会失败并且 recvfrom 返回无法访问或无用的地址?

最佳答案

如果您将此技术限制为仅广播 UDP,那么应该没问题。唯一会造成困惑的因素是双 NAT 或发夹 NAT 之类的东西。无论如何,这只是本地广播无法完成的。

关于networking - socket.recvfrom 总是返回有效地址吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11658724/

相关文章:

windows - 访问时自动发送魔法包

networking - Windows 7远程关机: Access denied(5)

c++ - MinGW64 和 "conflicting declaration of C function int select(...)"

python-3.x - 如何使用Python告诉客户端服务器中不存在文件

c - 当http header错误报告content-length时该怎么办

c# - 从网络共享运行 c# .NET 程序

networking - ping 个人 IP 与 ping 环回

我可以在C语言中对一个文件描述符调用两次shutdown吗?

java - 在 Java 中使用套接字解析和发送 HTTP 请求的正确方法是什么?

Perl关闭套接字