当前位置: 技术问答>linux和unix
C 怎样判定是哪个IP(MAC)收到的信息!
来源: 互联网 发布时间:2016-08-02
本文导语: 设备上有两个网卡(有线,无线),现在两个网卡都正常工作收发信息,现在有另外一台PC与此设备相连接(可能有线也可能是无线),发送信息,这时该怎样判断到底此设备上是哪个IP (MAC)接收到的信息呢?谢谢...
设备上有两个网卡(有线,无线),现在两个网卡都正常工作收发信息,现在有另外一台PC与此设备相连接(可能有线也可能是无线),发送信息,这时该怎样判断到底此设备上是哪个IP (MAC)接收到的信息呢?谢谢!
|
发送信息的程序要是你自己写的话
在accept后、recv、或者recvfrom后
把对方的struct sockaddr_in peer_addr;
里的ip取出来看看就知道了
两块网卡的ip总是不同的
在accept后、recv、或者recvfrom后
把对方的struct sockaddr_in peer_addr;
里的ip取出来看看就知道了
两块网卡的ip总是不同的
|
UDP可以这样
fd1 bind IP1
fd2 bind IP2
那么很显然fd1读到的包是从IP1过来的,同理fd2.。。
fd1 bind IP1
fd2 bind IP2
那么很显然fd1读到的包是从IP1过来的,同理fd2.。。
|
eth0 172.16.119.6
wlan 192.168.7.2
int fd_eth, fd_wlan;
struct sockaddr_in addr_eth, addr_wlan;
....
addr_eth.sin_addr.s_addr = inet_aton("172.16.119.6");
addr_wlan.sina_addr.s_addr = inet_aton("192.168.7.2");
当然,如果eth0, wlan是一个网段的, 可能会出问题(应该不会有这样的设备,感觉怪怪的)
wlan 192.168.7.2
int fd_eth, fd_wlan;
struct sockaddr_in addr_eth, addr_wlan;
....
addr_eth.sin_addr.s_addr = inet_aton("172.16.119.6");
addr_wlan.sina_addr.s_addr = inet_aton("192.168.7.2");
当然,如果eth0, wlan是一个网段的, 可能会出问题(应该不会有这样的设备,感觉怪怪的)