gpt4 book ai didi

c# - 测试互联网连接的最快方法

转载 作者:IT王子 更新时间:2023-10-29 04:30:18 26 4
gpt4 key购买 nike

C# 2008 SP1

我正在使用此代码连接到我们的客户网站。这是一个软电话应用程序。在用户调用电话之前,软电话必须测试是否有事件的互联网连接。

所以,我想做的是使用 httpWebRequest 类连接到我们的客户网站。如果响应正常,则可以继续进行 Internet 连接。

但是,我注意到响应时间过长。我不确定这是否不是一种非常有效的测试方法。

但是,当我浏览他们的网站时,加载页面只需要不到一秒钟的时间。但是当我使用 HttpWebRequest 类时花费的时间太长

所以要求是:

有时会在客户办公室使用代理。我无法使用 TCPClient 类(没有代理属性)。

代理不支持 SOCKS,因此不能使用 Sockets 类。

我需要使用超时属性。所以不能使用 WebClient 类。这是因为软电话会卡住,直到返回响应。所以几秒后超时。

所以我唯一能想到的就是 HttpWebRequest 类。

  HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.xxxxxxxxx.com");
request.Timeout = 5000;
request.Credentials = CredentialCache.DefaultNetworkCredentials;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

if (response.StatusCode == HttpStatusCode.OK)
{
Console.WriteLine("IsSIPServerAvailable: " + response.StatusCode);
isAvailable = true;
}

======== 使用 p\Invoke 编辑 ====

 [DllImport("wininet.dll", CharSet = CharSet.Auto)]
private extern static bool InternetGetConnectedState(ref InternetConnectionState_e lpdwFlags, int dwReserved);

[Flags]
enum InternetConnectionState_e : int
{
INTERNET_CONNECTION_MODEM = 0x1,
INTERNET_CONNECTION_LAN = 0x2,
INTERNET_CONNECTION_PROXY = 0x4,
INTERNET_RAS_INSTALLED = 0x10,
INTERNET_CONNECTION_OFFLINE = 0x20,
INTERNET_CONNECTION_CONFIGURED = 0x40
}

// In function for checking internet
InternetConnectionState_e flags = 0;
bool isConnected = InternetGetConnectedState(ref flags, 0);

最佳答案

尝试使用 P/Invoke 调用 InternetGetConnectedState .那应该告诉您是否配置了连接。然后您可以尝试使用 InternetCheckConnection 检查与您的服务的特定连接。 .这(有时)比直接连接连接要快,但我会对其进行测试,看看它是否比预先进行完整连接更好。

关于c# - 测试互联网连接的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/843810/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com