2012-05-21 2 views
3

좋아, 그래서 나는 클라이언트 컴퓨터와 서버 컴퓨터 간의 통신은 두 컴퓨터 사이에 소켓을 만들면서 창에서 시작할 수 있지만 내가 본 모든 튜토리얼은 최종 사용자 연결하려는 컴퓨터의 IP 주소를 알고 있어야합니다.네트워크 검색 서버

그러나 로컬 네트워크 LAN 게임에서 클라이언트는 서버를 어떻게 든 자동으로 감지합니다. 어떻게 이뤄지나요? 클라이언트가 가능한 모든 IP를 자동 검사합니까, 일종의 "GetDetectedIPs"API가 있습니까?

Im은 표준 WIN32 API에서 곧장 C로 구현할 수있는 답변을 찾고 있습니다. MFC, .NET 또는 C++을 사용하지 마십시오. 고맙습니다.

답변

0

클라이언트가 지정된 범위의 모든 IP로 UDP 패킷을 보내고 서버가 다른 UDP 패킷으로 응답하도록 할 수 있습니다.

+0

클라이언트가 UDP 패킷을 브로드 캐스트 할 수 있습니까? 그리고 서버는 유니 캐스트 UDP 패킷으로 응답합니다. – SKi

3

이라는 기술이 필요합니다. 예를 들어, BOOTP 및 DHCP 프로토콜에서 사용됩니다.

브로드 캐스트 대상 주소로 패킷을 보내면 LAN의 모든 장치에서 수신됩니다.

bcast_addr = ~netmask | my_addr; 

검색 프로세스는 일반적으로 좋아는 다음입니다 :

  1. 클라이언트가 특정에 방송 목적지 주소와 UDP 데이터 그램을 보내는 브로드 캐스트 주소는 호스트 식별 필드들로 가득되는 IP 주소입니다 포트.
  2. 서버는이 포트에서 수신 대기하고 데이터 그램을 수신합니다. 다른 컴퓨터는이를 버립니다.
  3. 서버는 일반적인 UDP 데이터 그램으로 클라이언트에 필요한 모든 정보를 클라이언트에 전송합니다.
관련 문제