c - 如果在 INADDR_ANY 上侦听,确定客户端连接的实际接口?
问题描述
在一个场景中,我正在通过 侦听 TCP 端口INADDR_ANY
并获得客户端连接,现在想要接受来自该连接的 UDP 数据包,我如何确定路由到该客户端以绑定的接口的实际 IP 地址到那个接口而不是 INADDR_ANY 的 UDP 套接字?据我所知,getsockname
我的侦听套接字会返回,那么是否有其他一些套接字 API 可以提供此信息?INADDR_ANY
或者我必须手动保留一个路由表,尝试通过连接到每个客户端来解析它(或者在所有接口上发送 ARP 并查看哪个接口解析了地址?)。
解决方案
接受连接后,您可以使用该函数获取accept
返回的新(已连接)套接字的本地地址。getsockname
推荐阅读
- r - 使用按总和从一组中的当前计算值使用 data.table 计算 R 中的另一个值
- python - 在 Pygame 平台游戏中遇到恼人的精灵抖动(未解决但已关闭)
- visual-studio - Visual Studio 一次查看多个文件的代码
- python - Python中非参数变量的继承
- r - 如何创建一个双循环并用数字填充它?
- java - 2个不同的Json对象被打印为响应,如何将它们分开并读取第二个对象中某个元素的值
- elasticsearch - 启动logstash的grok过滤器出错
- java - JPA 查询列规范
- cmake - 如何在 CMake 中指定依赖的库源文件路径
- sorting - 按日期自动排序