2014-07-24 10 views
0

시나리오 : Windows CE 5.0 기반 장치를 대상으로하는 응용 프로그램 개발. 이 응용 프로그램은 .NET Compact Framework 3.5 (C#)를 사용하여 개발 중입니다.C# LAN의 모든 활성 IP 주소를 찾는 최상의 방법

질문 : 당신은 LAN에 컴퓨터를 연결하고, 우리는 우리의 응용 프로그램에서 비슷한 구현하고자하는 모든 다른 활성 컴퓨터와 각각의 IP 주소를 볼 수 있습니다 때 그냥 좋아하는 경우에만 IP 주소 것입니다 나열되어 있어야합니다.

기존의 Windows 기능인 것을 감안할 때 쉽게 응용 프로그램을 구현할 수있을 것이라고 생각했습니다. 내 시나리오를 고려할 때 가장 좋은 접근 방법은 무엇입니까?

+0

존재하는 경우 ActiveDirectory 및 IP 스캐닝으로 이동합니다. –

+1

알다시피, 대부분의 넷 뷰 기능 유형은 NetBIOS를 기반으로합니다. 이는 끔찍한 벗겨짐입니다. 라우팅이 없을 때 서브넷을 사용하면 네트워크의 모든 IP 주소를 볼 수 없게 될 수 있습니다. – zaitsman

답변

0

당신이 20 이상 IPAdresses에 ping이 192.168.1.20에 192.168.1.1에서 진행하는 함수를 작성하고 서로 다른 스레드에서 호출 할 수 있습니다 defferent ofssets 부여 됨으로써 : 하나가 192.168에서 진행 192.168.1.1 다른 하나에서 진행 .1.21 ....... 는 defferent 스레드에서 그들에게 전화하지만이 CPU를 느려지 게 어쩌면 컴퓨터

3

먼저 FREEZ 당신이 에 당신이 무엇을 의미하는을 정의해야합니다 많은 그들에게 전화 해달라고 활성 IP 주소.

호스트는ICMP_ECHO블록 (통상적으로 ping reffered)하지만 특정 포트에 TCP, UDP 등의 접속을 허용 할 수있다.

당신이 당신의 호스트의 요구 서비스의 유형에 따라 당신은

  • 서브넷에있는 모든 IP 주소에 ICMP_ECHO 요청을 보낼 수 있습니다.

    -이의 IP 범위를 계산하는 방법 subnet 당신이 address space bitmask

    사용할 수 있습니다 - ICMP는 당신은 또한 broadcast 주소를 사용할 수 있습니다 요청에 대한합니다. 하지만 대부분의 호스트는 을 사용하여 플러딩을 사전에 수행하기 위해 브로드 캐스트 요청에을 응답하지 않습니다. 에 arp requests을 보내 (전체 IP 범위에 다시) 특정 TCP 포트에 연결을 엽니 다

  • 시도

  • dns query

  • 를 통해 그것을 사용하여 호스트의 목록을 제공하는 라우터 요청 이더넷 광범위한 캐스트 주소

은 기본적으로 일반적인 대답을하는 특정 IP 범위 또는 서브넷에있는 호스트의 목록을 얻을 수있는 너무 많은 방법이있다.

먼저 호스트 목록에 필요한 항목을 정의해야합니다.

관련 문제