sockets - 我可以找到正在处理我的套接字的网络接口(interface)/设备吗?

标签 sockets posix ioctl getsockopt

假设我有一个来自 socket(2) 的文件描述符我已经完成了 connect(2)关于它 - 以后有什么方法可以确定(从正在运行的程序内部)可能用于底层传输的网络设备?调用 stat(2)在 fd 上给出的设备号为 0;没有ioctl(2)getsockopt(2)选项似乎适用。

最佳答案

这样做没有万无一失的方法——当然不是符合 posix 的方法。

但是,在实践中,您可以在 99% 的时间内轻松确定接口(interface)。在你完成 connect 之后, 使用 getsockname获取 IP 地址,然后在盒子上的可用接口(interface)列表中查找具有匹配 IP 地址的接口(interface)。

关于sockets - 我可以找到正在处理我的套接字的网络接口(interface)/设备吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39104990/

相关文章:

C 回显服务器,回显一个句子后不能正常工作

c++ - Visual Studio /子系统 :POSIX not appearing in 2008

c++ - 使用 timer_create 传递用户数据

调用 ioctl() 会导致 errno 指示 "Bad address"

python - python 中的 socket 方法 recv(bufsize) 和 c 中的 recv(char *buf) 中的真正缓冲区是什么?

java - 如何从serversocket的accept方法中退出?

c++ - Winsock 使用 send() 和 FD_WRITE

c - Bash中的增减运算符是Undefined Behavior吗?

对 ioctl() 和内核头文件的混淆

c++ - 如何在 Driver.c controlFunction 接收使用 DeviceIoControl 发送的数据? IOCTL,驱动程序