如何使用C ++检查我是否有互联网连接或实时互联网连接?
答案 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
以检查您是否拥有有效的网络连接。 (如果你需要帮助,请告诉我。注册活动等很痛苦)。
之后,您可以使用IsNetworkAlive
,InternetGetConnectedStateEx
或InternetCheckConnection
之类的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.
}
希望这有帮助