Здравствуйте, Yehuda, Вы писали:
Y>Извините за неясно сформулированный вопрос. Y>Имеется ввиду проверка програмным путем из C#.
Тем не менее, пинг один из самых надёжных способов. Можешь инпортировать функции из ICMP.dll и использовать их.
Всякие проверки наличия соединения с внешним IP (внешними DNS серверами) нестабильны. К тому же нет гарантии что промежуточный роутер не сдох.
Но раз уж C# то конечно надо внести коррективы. microsoft.com из C# пингуется лучше.
Здравствуйте, adontz, Вы писали:
A> Можешь инпортировать функции из ICMP.dll и использовать их.
Уже ?
using System.Net.NetworkInformation;
//...
Ping pingSender = new Ping();
PingOptions options = new PingOptions();
// Use the default Ttl value which is 128,
// but change the fragmentation behavior.
options.DontFragment = true;
// Create a buffer of 32 bytes of data to be transmitted.string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 120;
PingReply reply = pingSender.Send("rsdn.ru", timeout, buffer, options);
if (reply.Status == IPStatus.Success)
{
Console.WriteLine("Address: {0}", reply.Address.ToString());
Console.WriteLine("RoundTrip time: {0}", reply.RoundtripTime);
Console.WriteLine("Time to live: {0}", reply.Options.Ttl);
Console.WriteLine("Don't fragment: {0}", reply.Options.DontFragment);
Console.WriteLine("Buffer size: {0}", reply.Buffer.Length);
}
A>Но раз уж C# то конечно надо внести коррективы. microsoft.com из C# пингуется лучше.
Здравствуйте, anvaka, Вы писали:
A>Здравствуйте, adontz, Вы писали:
A>> Можешь инпортировать функции из ICMP.dll и использовать их.
A>Уже ? A>
A>using System.Net.NetworkInformation;
A>//...
A> Ping pingSender = new Ping();
A> PingOptions options = new PingOptions();
A> // Use the default Ttl value which is 128,
A> // but change the fragmentation behavior.
A> options.DontFragment = true;
A> // Create a buffer of 32 bytes of data to be transmitted.
A> string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
A> byte[] buffer = Encoding.ASCII.GetBytes(data);
A> int timeout = 120;
A> PingReply reply = pingSender.Send("rsdn.ru", timeout, buffer, options);
A> if (reply.Status == IPStatus.Success)
A> {
A> Console.WriteLine("Address: {0}", reply.Address.ToString());
A> Console.WriteLine("RoundTrip time: {0}", reply.RoundtripTime);
A> Console.WriteLine("Time to live: {0}", reply.Options.Ttl);
A> Console.WriteLine("Don't fragment: {0}", reply.Options.DontFragment);
A> Console.WriteLine("Buffer size: {0}", reply.Buffer.Length);
A> }
A>
A>>Но раз уж C# то конечно надо внести коррективы. microsoft.com из C# пингуется лучше.
A>
Здравствуйте, anvaka, Вы писали:
A>Здравствуйте, adontz, Вы писали:
A>> Можешь инпортировать функции из ICMP.dll и использовать их.
A>Уже ? A>
A>using System.Net.NetworkInformation;
A>//...
A> Ping pingSender = new Ping();
A> PingOptions options = new PingOptions();
A> // Use the default Ttl value which is 128,
A> // but change the fragmentation behavior.
A> options.DontFragment = true;
A> // Create a buffer of 32 bytes of data to be transmitted.
A> string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
A> byte[] buffer = Encoding.ASCII.GetBytes(data);
A> int timeout = 120;
A> PingReply reply = pingSender.Send("rsdn.ru", timeout, buffer, options);
A> if (reply.Status == IPStatus.Success)
A> {
A> Console.WriteLine("Address: {0}", reply.Address.ToString());
A> Console.WriteLine("RoundTrip time: {0}", reply.RoundtripTime);
A> Console.WriteLine("Time to live: {0}", reply.Options.Ttl);
A> Console.WriteLine("Don't fragment: {0}", reply.Options.DontFragment);
A> Console.WriteLine("Buffer size: {0}", reply.Buffer.Length);
A> }
A>
A>>Но раз уж C# то конечно надо внести коррективы. microsoft.com из C# пингуется лучше.
A>
Здравствуйте, stump, Вы писали:
S>Пинг может быть перекрыт на прокси.
Ну тогда получить данные с www.google.com , если в <title> будет google значит интернет скорее есть, чем нет.
Но тут же можно привести несколько контраргументов в виде доступ к Google закрыт на прокси или сайт валяется в дауне.
... <<My edition based on RSDN@Home 1.2.0 alpha rev. 648>>
В задаче спрашивается:
Сколько вытечет портвейна из открытого бассейна?
Здравствуйте, stump, Вы писали:
S>Пинг может быть перекрыт на прокси.
И не только. Но мы же проверяем некое соединение с неким Интернет для общего случая, подразумевая в конечном итоге сокет (IP-трафик), а не http/ftp трафик.
public class InternetState
{
[DllImport("wininet.dll")]
extern static bool InternetGetConnectedState(out int Description, int ReservedValue) ;
public static bool IsConnected
{
get
{
int Desc ;
return InternetGetConnectedState(out Desc, 0 ) ;
}
}
}
Здравствуйте, Arboz, Вы писали:
A>Здравствуйте, Yehuda, Вы писали:
Y>>Как наиболее простым и однозначным способом проверить subj ?..
A>Полный ответ возможно будет найден здесь
A> public class InternetState
A> {
A> [DllImport("wininet.dll")]
A> extern static bool InternetGetConnectedState(out int Description, int ReservedValue) ;
A> public static bool IsConnected
A> {
A> get
A> {
A> int Desc ;
A> return InternetGetConnectedState(out Desc, 0 ) ;
A> }
A> }
A> }
A>
Здравствуйте, adontz, Вы писали:
A>Здравствуйте, Yehuda, Вы писали:
A>ping -t yahoo.com
Прошу прощения за беспокойство, но не смущает ли вас тот факт, что при подключении через проксю пинги не ходят(причем ингда и с паролем), а инет есть...
Здравствуйте, GavrishDV, Вы писали:
GDV>Прошу прощения за беспокойство, но не смущает ли вас тот факт, что при подключении через проксю пинги не ходят(причем ингда и с паролем), а инет есть... GDV>Может всетаки нуна у юзера переспрашивать...
Ага, типа
bool IsInternetAlive()
{
return DialogResult.Yes ==
MessageBox.Show(
"Эй, слушай проверь, есть ли соединение с Internet??? Очень надо!",
"Быть или не быть?",
MessageBoxButtons.YesNo
);
}
Здравствуйте, Andir, Вы писали:
A>Здравствуйте, GavrishDV, Вы писали:
GDV>>Прошу прощения за беспокойство, но не смущает ли вас тот факт, что при подключении через проксю пинги не ходят(причем ингда и с паролем), а инет есть... GDV>>Может всетаки нуна у юзера переспрашивать...
A>Ага, типа A>
A>bool IsInternetAlive()
A>{
A> return DialogResult.Yes ==
A> MessageBox.Show(
A> "Эй, слушай проверь, есть ли соединение с Internet??? Очень надо!",
A> "Быть или не быть?",
A> MessageBoxButtons.YesNo
A> );
A>}
A>
A>-)
A>С Уважением, Andir!
Нет типа введи адрес прокси, тип, имя юзера, пароль...
А потом еще гемор если аутентификация виндовая...
Или просто взять настройки експлорера, если им ктото пользуется...
Здравствуйте, GavrishDV, Вы писали:
GDV>Нет типа введи адрес прокси, тип, имя юзера, пароль... GDV>А потом еще гемор если аутентификация виндовая... GDV>Или просто взять настройки експлорера, если им ктото пользуется...
А как это может помочь в определении, доступен ли интернет? Ну выдали тебе адрес прокси, а пинги как не ходили, так и не ходят. И google.com тоже закрыт на проксе.