当前位置: 技术问答>linux和unix
socket 多网卡如何获知是哪张网卡接收的数据?
来源: 互联网 发布时间:2017-05-26
本文导语: 一台设备装了有线和无线两张网卡。可以同网段,也可以不同。 绑定的时候选择了 INADDR_ANY。 现在希望根据进入的网卡不同而回复不同的内容,请问如何做? 网上看到的方法有两张网卡分别bind。但是这样ip一改变...
一台设备装了有线和无线两张网卡。可以同网段,也可以不同。
绑定的时候选择了 INADDR_ANY。
现在希望根据进入的网卡不同而回复不同的内容,请问如何做?
网上看到的方法有两张网卡分别bind。但是这样ip一改变就要重新启动程序重新bind,比较麻烦。
绑定的时候选择了 INADDR_ANY。
现在希望根据进入的网卡不同而回复不同的内容,请问如何做?
网上看到的方法有两张网卡分别bind。但是这样ip一改变就要重新启动程序重新bind,比较麻烦。
|
Let me guess
getsockname first
http://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockname.html
Then here
http://stackoverflow.com/questions/6052377/how-to-get-mac-address-of-your-machine-using-a-c-program
I am not a network expert. But, if ips have been changed, you will have to restart the network first. Then your socket may not survive that anyway. So, your effort could be a waste.
getsockname first
http://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockname.html
Then here
http://stackoverflow.com/questions/6052377/how-to-get-mac-address-of-your-machine-using-a-c-program
I am not a network expert. But, if ips have been changed, you will have to restart the network first. Then your socket may not survive that anyway. So, your effort could be a waste.
|
《UNIX网络编程 》卷1,第95页:在一个以通配IP地址调用bind的TCP服务器上,与某个客户的连接一旦建立(accept成功返回),getsockname就可以用于返回由内核赋予该连接的本地IP地址。所以正解是getsockname
|
大神们,帮忙解决一下呗!