双网卡,如果获知自己使用的是哪个IP地址?

时间:2021-03-08 13:37:40
在双网卡机器上,发送数据需要将自己的IP地址告诉对方(一定要这样,中间可能存在一个我们自己的中继,对方通过socket无法获取IP地址)。
在Windows平台有没有办法在发送数据之前知道自己是从那张网卡(或IP地址)发送的数据。

不要告诉说,先进行connect一下,这样效率不好。

因为Windows本身的一个命令router print可以打出自己的路由,我想能获取到这张路由表通过匹配网络地址应该就可以知道从那个IP出去吧?
大家给个办法吧,谢谢了!

7 个解决方案

#1


对方的目的IP地址和路由决定着你的数据从哪个网卡出去,路由可以手动配置也就是说你可以指定从哪个网卡出去。对于外部的一个主机A你的问题只有两个网卡都可达A时才有意义,这种情况如果不配置路由两个网卡出去都可能,随便告诉对方一个ip都可以(当然如果A不是同一局域网不能是内网IP)。

#2


是这样,假设网卡1可以到达网络A,网卡2可以到达网络B,网络A和网络B独立。但是目前不知道如何从系统中获取出网卡1能到达哪些网络?
如果知道目的地是否网卡1可达,当然可以发送网卡1的IP.
问题是,随便告诉一个IP地址就不可行了,内网地址告诉外部主机,那外部主机肯定连不通。

谢谢!

#3


如果你的IP是如下的范围内,那么就是内网IP告诉外部主机没意义
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255
169.254.0.0~169.254.255.255

如果不是,可以通过下面方法测试
1、打开命令行窗口,“开始”,“运行”,输入“cmd”;
2、在命令行窗口中输入 ping 对方IP地址;
3、查看路由表,输入route PRINT看看对方的IP有哪一个条路由决定,对应的Interface的IP就是你的哪个网卡绑定的IP;
4、如果你对3步骤看不明白,还可以打开两个网卡状态对话框,重复2可以看到报文从哪个网卡出去,对应网卡发送和接受报文数会在你Ping的过程不断变化;
5、ping一个包用抓包工具抓出来看看也可以;
6、最简单的方法就是让对方ping一下你的两个IP地址,哪个能ping通就用哪个。

#4


说得很对,问题是要编程实现。
不知道有那个API可以获取系统路由的。

#5


那就解析 “router print”的结果

#6


查了一下MSDN,这个是获得路由表的API
GetIpForwardTable
我没用过,去查一下吧

如果嫌麻烦可以用WINEXEC直接调用外部程序返回结果

#7


关注……

#1


对方的目的IP地址和路由决定着你的数据从哪个网卡出去,路由可以手动配置也就是说你可以指定从哪个网卡出去。对于外部的一个主机A你的问题只有两个网卡都可达A时才有意义,这种情况如果不配置路由两个网卡出去都可能,随便告诉对方一个ip都可以(当然如果A不是同一局域网不能是内网IP)。

#2


是这样,假设网卡1可以到达网络A,网卡2可以到达网络B,网络A和网络B独立。但是目前不知道如何从系统中获取出网卡1能到达哪些网络?
如果知道目的地是否网卡1可达,当然可以发送网卡1的IP.
问题是,随便告诉一个IP地址就不可行了,内网地址告诉外部主机,那外部主机肯定连不通。

谢谢!

#3


如果你的IP是如下的范围内,那么就是内网IP告诉外部主机没意义
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255
169.254.0.0~169.254.255.255

如果不是,可以通过下面方法测试
1、打开命令行窗口,“开始”,“运行”,输入“cmd”;
2、在命令行窗口中输入 ping 对方IP地址;
3、查看路由表,输入route PRINT看看对方的IP有哪一个条路由决定,对应的Interface的IP就是你的哪个网卡绑定的IP;
4、如果你对3步骤看不明白,还可以打开两个网卡状态对话框,重复2可以看到报文从哪个网卡出去,对应网卡发送和接受报文数会在你Ping的过程不断变化;
5、ping一个包用抓包工具抓出来看看也可以;
6、最简单的方法就是让对方ping一下你的两个IP地址,哪个能ping通就用哪个。

#4


说得很对,问题是要编程实现。
不知道有那个API可以获取系统路由的。

#5


那就解析 “router print”的结果

#6


查了一下MSDN,这个是获得路由表的API
GetIpForwardTable
我没用过,去查一下吧

如果嫌麻烦可以用WINEXEC直接调用外部程序返回结果

#7


关注……