2012-02-24 2 views
0

Я делаю приложение чата LAN (сервер и клиентская программа), и я хотел знать, как я могу получить IP-адрес своего собственного компьютера (для серверной программы) и нашел this question.Как узнать, не подключен ли компьютер к сети?

Я использовал код в своей программе и протестировал его, пока мой компьютер не подключен к Интернету, к локальной сети или каким-либо внешним устройствам, и я думал, что из этого кода будет выведено исключение (и это будет означать, что мой компьютер не подключена какая-либо сеть) ... но это не так, и вместо этого он вернул IP-адрес.

Есть ли способ узнать, не подключен ли мой компьютер к какой-либо сети?

+1

Возможный дубликат [этот вопрос] (http://stackoverflow.com/questions/520347/c-sharp-how-do-i-check-for-a-network-connection) – Anastasiosyal

ответ

1

С помощью System.Net.NetworkInformation вы можете собирать информацию о своих сетевых интерфейсах. Таким образом, это должно помочь вам:

public Boolean isConnected() 
{ 
    NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces(); 

    foreach (NetworkInterface face in interfaces) 
    { 
     if (face.OperationalStatus == OperationalStatus.Up || face.OperationalStatus == OperationalStatus.Unknown) 
     { 
      // Internal network interfaces from VM adapters can still be connected 
      IPv4InterfaceStatistics statistics = face.GetIPv4Statistics(); 
      if (statistics.BytesReceived > 0 && statistics.BytesSent > 0) 
      { 
       // A network interface is up 
       return true; 
      } 
     } 
    } 
    // No Interfaces are up 
    return false; 
} 
0

только для проверки того, что если вы подключены к сети в какой-либо конкретный момент времени, проверьте, доступен ли какой-либо из ваших шлюзов в этот момент времени, например. ping все адреса шлюза, и если хотя бы один из них отвечает, то вы действительно подключены: если никто из них не ответил, ваш кабель по-прежнему может быть подключен, но нельзя сказать, что вы подключены к сети!

надеюсь, что это поможет! cforfun!

+0

как я это сделаю в C# код? – Xel

+1

@ Xei жаль, что я не закодирован в C#, поэтому не могу привести здесь пример. но вы должны иметь возможность вызывать любой скрипт из C#, и этот скрипт может выполнить эту работу за вас. например, ping и ifconfig - это две программы, доступные в основном для всех систем (или их вариации): этих двух программ достаточно для разработки этой логики. Есть много других способов, которыми вы можете развить эту простую логику, но использование простых скриптов/сетевых инструментов может решить удивительные проблемы, а не самостоятельно разрабатывать всю логику. – cforfun

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