【发布时间】:2011-02-14 13:03:52
【问题描述】:
我需要编写一个 win32 c/c++ 应用程序,它能够确定运行它的 PC 是否连接到 2 个网络之一。第一个网络是公司 LAN(没有互联网连接),第二个网络是一个独立的交换机,连接了一台 PC(运行程序的 PC)。
我对网络编程还很陌生,但到目前为止,我已经尝试测试是否可以映射我们 LAN 上的网络驱动器。如果 PC 连接到 LAN,则此方法工作正常,驱动器映射成功,因此 LAN 检测成功。但是,如果 PC 连接到交换机,这会导致非常长的超时,这是不合适的,因为它会延迟程序以至于使其无法使用。
有人有其他建议吗?
我在 VS 6.0 中使用 c/c++
[更新]
在尝试一些不同的想法并查看下面的一些建议时,我认为我应该更新一些额外的信息,尽可能多的(如果不是全部)我认为不会奏效的建议。
(1) 上述局域网完全没有外部连接,完全隔离,无法解析外部DNS或ping网站。
(2) 主机名、MAC 地址、IP、默认网关、子网等(基本上您在 ipconfig -all 中看到的所有内容)都是手动配置的(不是从路由器动态配置的),因此检查任何这些设置都会返回相同无论是连接到局域网还是交换机。
(3) 由于第 (2) 点,任何与交换机通信的尝试似乎都不成功,事实上几乎所有网络命令(ping、arp 等)似乎都失败了 - 我认为是由于机器试图连接当它不存在时到 LAN :-(
我发现一个可行的方法是 ping 连接到交换机时超时的默认网关 IP。这没关系,因为我可以减少 ping 的超时,因此它不仅会挂起很长时间,而且感觉有点像 hack,我当然会感谢任何更好的解决方案。
谢谢
【问题讨论】:
-
与问题无关,但是:您真的使用的是 1998 年的旧编译器?
-
所以你有两个不同的网络,它们的配置相同,所以软件无法区分,现在你想用软件来区分。
-
@akira 不幸的是,是的。这是遗留代码,由于软件的复杂性和我们的可测试性限制,公司不愿意更新编译器。如果他们这样做,将导致必须进行完整的系统测试,这需要 3 人的团队超过 6 周的时间才能完成。
标签: c++ c winapi visual-c++ network-programming