2014-06-16 5 views
0

로컬 영역 네트워크에있는 모든 IP 주소 (즉, 기기)의 목록을 가져오고 싶습니다. 나는 nmap, 다른 네트워킹 도구를 사용하고 싶지 않다. 또한 서브넷 범위에서 각 IP 주소를 핑 (ping)하고 라이브 IP 주소를 찾지 않겠습니까? C, C++를 사용하는 방법이 있습니까?로컬 영역 네트워크에있는 모든 IP 주소 (기기) 목록

+2

C 또는 C++ :

Qt는 당신이 그들을 좋아 달성하기 위해 QProcess를 사용할 수 있습니까? 하나를 선택. 그리고이 목적을 위해 명시 적으로 설계된 도구가 왜 당신에게 충분하지 않은지 설명하십시오. –

+0

클라이언트가 제공하는 서비스를 클라이언트가 '발견'하게하려면 브로드 캐스트 패키지를 볼 수 있습니다. 각 클라이언트는 여러 브로드 캐스트 패키지를 보내고 서버는 브로드 캐스트를 수행 한 IP에 응답을 보냅니다. (http://gamedev.stackexchange.com/questions/13427/how-do-game-clients-know-that-a-server-is-running-on-their-lan) – Lanting

+0

실용적이고 그것을 사용하고 싶습니다. 이러한 도구를 구성 할 수 없습니다. – Sanket

답변

0

LAN의 모든 호스트를 확인할 수있는 확실한 방법은 없습니다. 이웃들을 추측 할 수있는 많은 방법이 있으며, 각각의 장점과 단점이 있습니다. 그러나 당신은 모든 호스트를 얻을 수 있는지 결코 확신하지 못합니다. 예를 들어 브로드 캐스트에 핑을 시도 할 수 있지만 누군가가 핑에 응답 할 수 없습니다. 따라서 신뢰할 수있는 방법은 없습니다. 터미널의 명령에 의존하는 몇 가지 방법이 있습니다. nmap을 사용해 볼 수 있습니다. 비록 nmap을 설치해야하지만 : nmap :

nmap -sP 192.168.1.* 

이것은 모든 호스트가 온라인 상태인지 확인하기 위해 전체 서브넷에서 간단한 핑 검사를 수행합니다.

또는 당신은 또한 (nmap을 설치할 필요하지 않습니다) 다음 단계를 시도 할 수 있습니다 :

  • 유형 "에서 ipconfig"명령 프롬프트에서. 이것은 자신의 컴퓨터의 IP 주소를 제공합니다. 예를 들어, 컴퓨터의 IP 주소는 192.168.1.6 이므로 브로드 캐스트 IP 주소는 192.168.1.255입니다.
  • 핑 브로드 캐스트 IP 주소 "핑 192.168.1.255"(리눅스에서 -b 가 필요할 수 있음)
  • 지금 당신은 당신의 세그먼트의 모든 IP 주소의 목록을 얻을 것이다 "에서 arp -a"를 입력합니다.

일부 툴킷을 사용하여 응용 프로그램에서 적절한 인수를 사용하여 arp 또는 nmap을 시작할 수 있습니다.

QProcess myProcess; 
QString program = "arp"; 
QStringList arguments; 
arguments << "-a"; 
myProcess.start(program, arguments); 
myProcess.waitForFinished(); 
QByteArray result = myProcess.readAllStandardOutput(); 
const QString all(result); 
2

당신이 그렇지 않으면에 대한 다른 기계를 알고있는에 기계를 기대하는 방법을 제

이를 파악하기 위해 몇 가지 "네트워킹 도구"를 사용해야 할거야 물론

?

DHCP 서버를 쿼리하는 방법이 있지만 정적 IP가있는 장치는 공개되지 않습니다.

신뢰성있는 방법은 문제의 장치와 어떤 방식으로 통신하는 것입니다.

+0

DHCP 서버를 사용하여 찾는 방법은 무엇입니까? 간단히 설명해주십시오. – Sanket

-1

libpcap을 사용하여 중앙 위치에서 무차별 모드로 네트워크 패킷을 스니핑하고 원본 IP를 추출 할 수 있습니다. 도전은이 스니퍼를 넣을 중앙 위치를 확인하는 것입니다.

+0

이것은 모든 문제를 해결할 수있는 문제입니다. – JBentley

관련 문제