2012-02-24 2 views
0

LAN 채팅 응용 프로그램 (서버 및 클라이언트 프로그램)을 만들고 있는데 내 컴퓨터의 IP 주소 (서버 프로그램 용)를 얻는 방법을 알고 싶었고 this question을 찾았습니다.컴퓨터가 네트워크에 연결되어 있지 않은지 어떻게 알 수 있습니까?

컴퓨터에서 인터넷이나 LAN 또는 외부 장치에 연결되어 있지 않은 상태에서 프로그램에서 코드를 사용하여 테스트 한 결과 코드가 예외로 인해 컴퓨터가 작동하지 않는다고 생각했습니다. 어떤 네트워크에도 연결되어 있지 않다.) ...하지만 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)하고 적어도 하나가 응답하면 정말로 연결되어 있습니다. 아무도 응답하지 않으면 여전히 케이블이 연결되어있을 수 있지만 네트워크에 연결되었다고 말할 수는 없습니다!

희망이 도움이됩니다. 이혼!

+0

어떻게 그렇게할까요? C# 코드? – Xel

+1

@Xei 죄송합니다. C#으로 코딩하지 않았으므로 여기서 예제를 줄 수는 없습니다. 하지만 당신은 C#에서 모든 스크립트를 호출 할 수 있어야하고 그 스크립트는 당신을 위해 일을 할 수 있습니다. 예를 들어 ping과 ifconfig는 대부분 모든 시스템 (또는 그 변형)에서 사용 가능한 두 가지 프로그램입니다.이 두 프로그램은이 논리를 개발하는 데 충분합니다. 이 간단한 논리를 개발할 수있는 다른 많은 방법이 있지만 간단한 스크립트/네트워크 도구를 사용하면 전체 논리를 직접 개발하는 것보다 놀라운 문제를 해결할 수 있습니다. – cforfun

관련 문제