Чтобы проверить, подключен ли наш компьютер к брандмауэру, мы проверяем, открывается ли страница входа в систему для этого брандмауэра. Если время ожидания истекло, обработка ошибок сообщит, что она подключена, если она открывается (или выдает ошибку сертификата, как в нашем случае), мы знаем, что мы не подключены.
Большая проблема в этом процессе заключается в том, что когда мы уже подключены, приложение зависает до истечения времени ожидания веб-страницы.
Любой ввод приветствуется, вот код, который я использую:
public static bool FirewallConnectivityStatus(string url)
{
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Proxy = null;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (HttpStatusCode.OK == response.StatusCode)
{
response.Close();
return false;
}
else
{
return true;
}
}
catch (WebException Ex)
{
if (Ex.Status == WebExceptionStatus.TrustFailure)
{
return false;
}
else
{
return true;
}
}
}
Обновление
Тем временем я обнаружил сокетное соединение, которое позволит мне намного лучше создать это соединение через IP вместо URL: C # - Сокет для входа в брандмауэр