2016-01-02 3 views
1

Итак, я знаю, что можно выполнить ping-сервер с помощью Ping.Send (string) в C#, но можно ли было бы пинговать определенное веб-приложение, а не весь сервер. Например, есть сервер с тремя веб-сайтами (a, b и c), размещенными на нем. IP-адрес сервера 1.1.1.1. У каждого из сайтов есть другой порт. Как я могу проверить, находится ли веб-сайт в настоящее время?Как я могу проверить, есть ли сайт a в сети?

+2

Возможный дубликат [Как проверить удаленный IP и порт доступен] (http://stackoverflow.com/questions/22903861/how-to-check-remote-ip-and-port-is-available). Второй способ - это то, что вы хотите. – Cyral

+0

Определите «онлайн» очень точно, а затем проверьте, соответствует ли оно этому определению. Например, если вы решите, что «онлайн» означает, что вы можете получить целевую страницу, попробуйте получить целевую страницу и посмотреть, удастся ли вам это сделать. –

+0

@Coral, что они означают по имеющимся? –

ответ

5

Просто сделайте запрос на сайт

private bool PingWebSite(string url) 
{ 
    try 
    { 
     WebRequest.Create(url).GetResponse(); 
     return true; 
    } 
    catch 
    { 
     return false; 
    } 
} 

И затем использовать его

var isWebSiteWorking = PingWebSite("http://stackoverflow.com"); 
2

Я не сделал бы в GetResponse() потому, что, если этот конкретный Url возвращается вам 1+ Гб файл, это заблокирует ваше приложение. Просто сделать запрос главы должен быть достаточным или использовать TcpClient.

async Task<Boolean> IsAvailable() 
{ 
    string url = "http://www.google.com"; 
    try 
    { 
     using (var client = new HttpClient()) 
     { 
      HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Head, url); 
      var response = await client.SendAsync(request); 
      if (response.IsSuccessStatusCode) 
      { 
       response.Dump(); 
       return true; 
      } 
      else 
      { 
       return false; 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     return false; 
    } 
} 
+0

Я закончил использовать TcpClient, потому что он работал лучше всего для того, что я пытался сделать. –

Смежные вопросы