14 个解决方案
#1
应该没有办法判断,尤其是通过程序判断。
#2
好像没有呢....
不知判断DNS是否可以?
不知判断DNS是否可以?
#3
首先你两台机是不是通过一个路由器连接的,如果是,那通过子网掩码判断是没错的
#4
程序判断没有通用的方法吗?如果不判断同局域网的udp打洞能成功吗?(网内出口的公网IP可能不同)
#5
楼主怎么怎么奔啊,C1发S S得到C1的路由外网地址, C2发S S得到C2的路由外网地址,
将2个地址比较下不就OK了?
将2个地址比较下不就OK了?
#6
网上看到,用两台机子的本地IP和子网掩码相与,结果相同时说明在同一网段,但实际这个判断是不对的,我用两台确实不在同一局域网的机子测式,获取的结果是在同一网段
---------------------
你必须清楚IP地址是靠统一管理而不是技术手段来保证唯一性的...
你说的这种情况一定是所谓用于私有网络的保留地址(例如最常用的192.168.x.x)...通过NAT或Proxy之类的方式连接的...这种地址是不允许在Internet上使用的...
“用两台机子的本地IP和子网掩码相与,结果相同时说明在同一网段”是不包括使用NAT或Proxy之类的情况的...事实上NAT或Proxy隐藏了所谓内部地址...
---------------------
你必须清楚IP地址是靠统一管理而不是技术手段来保证唯一性的...
你说的这种情况一定是所谓用于私有网络的保留地址(例如最常用的192.168.x.x)...通过NAT或Proxy之类的方式连接的...这种地址是不允许在Internet上使用的...
“用两台机子的本地IP和子网掩码相与,结果相同时说明在同一网段”是不包括使用NAT或Proxy之类的情况的...事实上NAT或Proxy隐藏了所谓内部地址...
#7
举个例子,一个办公楼使用宽带上网,楼里的每个公司都有自己的局域网,
公司A ip 192.168.0.1-192.168.0.254 mask 255.255.255.0
公司B ip 192.168.0.1-192.168.0.254 mask 255.255.255.0
然后两个公司都通过自己的路由器连接到办公楼的路由器上面,这种情况在公网上没有办法
判断访问是来自哪个公司的。
公司A ip 192.168.0.1-192.168.0.254 mask 255.255.255.0
公司B ip 192.168.0.1-192.168.0.254 mask 255.255.255.0
然后两个公司都通过自己的路由器连接到办公楼的路由器上面,这种情况在公网上没有办法
判断访问是来自哪个公司的。
#8
是的真是有点不才,才请求帮助.
C1发S S得到C1的路由外网地址,C2发S S得到C2的路由外网地址,都得到了,比较是不一样的,但两台机子确实是同一局域网的.我的意思是通过这种方式比较是不妥的,怎么能在出口地址不一致的情况下判断是否在同一局域网内.谢谢回答! 还是没有解决我的疑惑.
C1发S S得到C1的路由外网地址,C2发S S得到C2的路由外网地址,都得到了,比较是不一样的,但两台机子确实是同一局域网的.我的意思是通过这种方式比较是不妥的,怎么能在出口地址不一致的情况下判断是否在同一局域网内.谢谢回答! 还是没有解决我的疑惑.
#9
谢谢zhongshan99的回答!看来程序是没法判断了.我是在udp打洞程序里想先判断一下这种情况,因为在同一局域网内(出口公网IP不同)打洞测式总是不通.程序若能判断出来是同一局域网内就不用打洞了.直接能通.
#10
为什么不让两台机器相互确认,比如发个局域网的广播包即可
#11
zswang 说的对.若程序不能判断的话.我就准备用这各方式.
#12
也可以这样来做。
#13
在DOS下有一个命令叫 tracert.exe
是用来查看从本机到另一方的IP间经过我多少个路由网关。
tracert.exe 后直接跟IP地址或主机名,每经过一个路由网关就会有一条新的信息,如果你设置参数 -h 1,就意味着系统只会经过一个路由网关,不管是否找到最终的地址,也会停下来。
相信Socket编程也会有类似的功能吧,这应该归属于ICMP中。
是用来查看从本机到另一方的IP间经过我多少个路由网关。
tracert.exe 后直接跟IP地址或主机名,每经过一个路由网关就会有一条新的信息,如果你设置参数 -h 1,就意味着系统只会经过一个路由网关,不管是否找到最终的地址,也会停下来。
相信Socket编程也会有类似的功能吧,这应该归属于ICMP中。
#14
ping /all
#1
应该没有办法判断,尤其是通过程序判断。
#2
好像没有呢....
不知判断DNS是否可以?
不知判断DNS是否可以?
#3
首先你两台机是不是通过一个路由器连接的,如果是,那通过子网掩码判断是没错的
#4
程序判断没有通用的方法吗?如果不判断同局域网的udp打洞能成功吗?(网内出口的公网IP可能不同)
#5
楼主怎么怎么奔啊,C1发S S得到C1的路由外网地址, C2发S S得到C2的路由外网地址,
将2个地址比较下不就OK了?
将2个地址比较下不就OK了?
#6
网上看到,用两台机子的本地IP和子网掩码相与,结果相同时说明在同一网段,但实际这个判断是不对的,我用两台确实不在同一局域网的机子测式,获取的结果是在同一网段
---------------------
你必须清楚IP地址是靠统一管理而不是技术手段来保证唯一性的...
你说的这种情况一定是所谓用于私有网络的保留地址(例如最常用的192.168.x.x)...通过NAT或Proxy之类的方式连接的...这种地址是不允许在Internet上使用的...
“用两台机子的本地IP和子网掩码相与,结果相同时说明在同一网段”是不包括使用NAT或Proxy之类的情况的...事实上NAT或Proxy隐藏了所谓内部地址...
---------------------
你必须清楚IP地址是靠统一管理而不是技术手段来保证唯一性的...
你说的这种情况一定是所谓用于私有网络的保留地址(例如最常用的192.168.x.x)...通过NAT或Proxy之类的方式连接的...这种地址是不允许在Internet上使用的...
“用两台机子的本地IP和子网掩码相与,结果相同时说明在同一网段”是不包括使用NAT或Proxy之类的情况的...事实上NAT或Proxy隐藏了所谓内部地址...
#7
举个例子,一个办公楼使用宽带上网,楼里的每个公司都有自己的局域网,
公司A ip 192.168.0.1-192.168.0.254 mask 255.255.255.0
公司B ip 192.168.0.1-192.168.0.254 mask 255.255.255.0
然后两个公司都通过自己的路由器连接到办公楼的路由器上面,这种情况在公网上没有办法
判断访问是来自哪个公司的。
公司A ip 192.168.0.1-192.168.0.254 mask 255.255.255.0
公司B ip 192.168.0.1-192.168.0.254 mask 255.255.255.0
然后两个公司都通过自己的路由器连接到办公楼的路由器上面,这种情况在公网上没有办法
判断访问是来自哪个公司的。
#8
是的真是有点不才,才请求帮助.
C1发S S得到C1的路由外网地址,C2发S S得到C2的路由外网地址,都得到了,比较是不一样的,但两台机子确实是同一局域网的.我的意思是通过这种方式比较是不妥的,怎么能在出口地址不一致的情况下判断是否在同一局域网内.谢谢回答! 还是没有解决我的疑惑.
C1发S S得到C1的路由外网地址,C2发S S得到C2的路由外网地址,都得到了,比较是不一样的,但两台机子确实是同一局域网的.我的意思是通过这种方式比较是不妥的,怎么能在出口地址不一致的情况下判断是否在同一局域网内.谢谢回答! 还是没有解决我的疑惑.
#9
谢谢zhongshan99的回答!看来程序是没法判断了.我是在udp打洞程序里想先判断一下这种情况,因为在同一局域网内(出口公网IP不同)打洞测式总是不通.程序若能判断出来是同一局域网内就不用打洞了.直接能通.
#10
为什么不让两台机器相互确认,比如发个局域网的广播包即可
#11
zswang 说的对.若程序不能判断的话.我就准备用这各方式.
#12
也可以这样来做。
#13
在DOS下有一个命令叫 tracert.exe
是用来查看从本机到另一方的IP间经过我多少个路由网关。
tracert.exe 后直接跟IP地址或主机名,每经过一个路由网关就会有一条新的信息,如果你设置参数 -h 1,就意味着系统只会经过一个路由网关,不管是否找到最终的地址,也会停下来。
相信Socket编程也会有类似的功能吧,这应该归属于ICMP中。
是用来查看从本机到另一方的IP间经过我多少个路由网关。
tracert.exe 后直接跟IP地址或主机名,每经过一个路由网关就会有一条新的信息,如果你设置参数 -h 1,就意味着系统只会经过一个路由网关,不管是否找到最终的地址,也会停下来。
相信Socket编程也会有类似的功能吧,这应该归属于ICMP中。
#14
ping /all