首页 > 解决方案 > 如果在 INADDR_ANY 上侦听,确定客户端连接的实际接口?

问题描述

在一个场景中,我正在通过 侦听 TCP 端口INADDR_ANY并获得客户端连接,现在想要接受来自该连接的 UDP 数据包,我如何确定路由到该客户端以绑定的接口的实际 IP 地址到那个接口而不是 INADDR_ANY 的 UDP 套接字?据我所知,getsockname我的侦听套接字会返回,那么是否有其他一些套接字 API 可以提供此信息?INADDR_ANY或者我必须手动保留一个路由表,尝试通过连接到每个客户端来解析它(或者在所有接口上发送 ARP 并查看哪个接口解析了地址?)。

标签: csockets

解决方案


接受连接后,您可以使用该函数获取accept返回的新(已连接)套接字的本地地址。getsockname


推荐阅读