2012-12-10 2 views
-4

LAN 네트워크를 사용하여 연결된 컴퓨터의 IP 주소를 모두 찾는 방법은 무엇입니까?LAN에 연결된 컴퓨터의 IP 주소를 모두 얻는 방법 #

foreach (NetworkInterface netInterface in NetworkInterface.GetAllNetworkInterfaces()) 
     { 
      IPInterfaceProperties ipProps = netInterface.GetIPProperties(); 
      foreach (UnicastIPAddressInformation addr in ipProps.UnicastAddresses) 
      { 
       listBox1.Items.Add(addr.Address.ToString()); 
      } 
     } 

여기 코드는 내가 사용하고 있지만이 코드는 내 로컬 IP와 127.0.0.1 만 반환합니다. 다른 IP 주소를 찾을 수 없습니다.

+2

일부 코드를 표시하십시오 ... 시도한 내용이 무엇입니까? 작동하지 않는 것은 무엇입니까? – Yahia

+0

당신이하려고하는 것은 DHCP 서버의 작업과 비슷해 보입니다 ... 필요한 경우 사람들이 대안을 도울 수 있도록 왜 그렇게해야하는지 설명하십시오. – ryadavilli

+2

노력의 수준이 0에 접근 중입니다. – leppie

답변

2

일반적으로 할 수 없습니다. IP 주소 범위 (예 : 로컬 서브넷)의 모든 시스템에 ping을 시도 할 수 있지만 일부 활성 시스템은 핑에 응답하지 않을 수 있습니다. 열려있는 포트 (웹 서버 포트, Windows 파일 공유 포트 등)에 연결을 시도해 볼 수 있으며 일부 컴퓨터는 있지만 찾을 수는 없습니다. 그리고 네트워크가 모니터링되면 해커처럼 보일 수 있습니다.

네트워크에 따라 IP 주소 범위에 대한 DNS 역방향 조회를 시도 할 수 있습니다. 이것은 동적 인 IP 주소가 바뀌더라도 이름으로 호스트에 액세스하는 한 가지 방법이기 때문에 DHCP가 사용되고 로컬 DNS 서버에 연결되어있는 경우에 일반적입니다. 작동하면이 접근법은 호스트 이름이있는 활성 임대를 리턴합니다 (따라서 일부 기계는 현재 활성 상태가 아닐 수 있습니다).

0

System.Net 네임 스페이스에는 Ping 클래스가 있습니다. 그러나 대상 컴퓨터가 방화벽을 실행하지 않는 경우에만 사용할 수 있습니다.

using System.Net 

NetworkInformation.Ping newping = new NetworkInformation.Ping(); 
NetworkInformation.PingReply reply = newping.Send("192.168.1.1"); 
if (reply.Status == NetworkInformation.IPStatus.Success) 
{ 
    // Target computer is an active host 
} 

컴퓨터에 방화벽이있는 경우 스위치에서 간단한 네트워크 관리 프로토콜을 사용할 수 없습니다.

관련 문제