如何使用C ++以编程方式检查是否有实时Internet连接

时间:2010-08-31 17:05:41

标签: c++ connection

如何使用C ++检查我是否有互联网连接或实时互联网连接?

3 个答案:

答案 0 :(得分:4)

C ++没有内置函数,您需要求助于系统API。最简单明了的方法是创建套接字并尝试将其连接到某个已知IP或检查DNS是否正常工作。

一些有用的链接:
http://msdn.microsoft.com/en-us/library/ms740673(VS.85).aspx(Windows套接字)
http://www.tenouk.com/cnlinuxsockettutorials.html(Linux / Unix套接字)

答案 1 :(得分:2)

最简单的方法是尝试连接到已知的外部IP地址。如果在Windows中失败,则connect函数将返回SOCKET_ERROR,并且WSAGetLastError通常将返回WSAEHOSTUNREACH(意味着无法将数据包发送到主机)。在Linux中,你将获得-1,而errno将是ENETUNREACH。

答案 2 :(得分:-1)

对于初学者,您可以订阅ISensIntf以检查您是否拥有有效的网络连接。 (如果你需要帮助,请告诉我。注册活动等很痛苦)。 之后,您可以使用IsNetworkAliveInternetGetConnectedStateExInternetCheckConnection之类的Api来检查互联网连接等。

如果您使用C#或VB,则首先添加对

的引用
Microsoft.VisualBasic.Code.
Microsoft.VisualBasic.Devices.Network network = new Microsoft.VisualBasic.Devices.Network();
                network.NetworkAvailabilityChanged += new Microsoft.VisualBasic.Devices.NetworkAvailableEventHandler(network_NetworkAvailabilityChanged);

...

private static void network_NetworkAvailabilityChanged(object sender, Microsoft.VisualBasic.Devices.NetworkAvailableEventArgs e)
        {
            if (e.IsNetworkAvailable)
            {
                 //network is connected.. do something..
            }
            else
            {
                //network isnt connected.. do something else.
            }

希望这有帮助