2010-07-08 3 views
6

winsocket을 사용하여 내 게임을 LAN으로 재생할 수있는 게임으로 바꿀 수있는 방법을 알아 내려고하고 있습니다. 일부 winsockets 설명서를 읽었지만 클라이언트가 LAN에서 작성된 모든 게임을 가져올 수있는 방법을 파악할 수 없습니다.winsock을 사용하는 스캔 LAN 게임 서버

LAN의 각 IP에 192.168.0.1, 192.168.0.2 등의 연결을 시도하는 등 연결을 시도해야합니까? 더 좋은 방법이 있습니까?

+0

체크 아웃 http://en.wikipedia.org/wiki/Broadcast_address –

답변

3

브로드 캐스트를 사용하여 LAN에서 서버를 광고 할 수 있습니다. 그런 다음 클라이언트는 이러한 브로드 캐스트를 수신하여 서버를 찾을 수 있습니다.

더 많은 정보를 원하시면 여기를 참조하십시오 : http://tangentsoft.net/wskfaq/intermediate.html#broadcast

2

은 일반적으로 이러한 게임 서버는 모든 클라이언트가 받아 그들이 듣고있는 것처럼 너무 오래 처리 할 수있는 뭔가가 로컬 UDP 브로드 캐스트를 사용합니다. http://visual-c.itags.org/visual-c-c++/29424/

0

첫째로, 나는 당신이 어떤 네트워크 개발을 위해 와이어 샤크를 얻을 것을 제안 : 여기

내가 그런 당신에게 관심을 가질 발견 된 일부 샘플 클라이언트와 서버 코드입니다. 그것은 패킷이 전선을 통과하는 것을 보여줍니다. 이렇게하면 여러 가지 방법이 있기 때문에 다른 게임이 어떻게하는지 볼 수 있습니다.

UDP 브로드 캐스트를 사용하는 것이 한 가지 방법입니다. 목표 ip의 마지막 바이트를 255로 변경하기 만하면됩니다.

+4

마지막 바이트를 맹목적으로 변경해도 항상 작동하지는 않습니다. 네트워크에서 사용중인 실제 서브넷 마스크에 따라 다릅니다. 브로드 캐스트 주소를 생성하는 올바른 방법은 로컬 컴퓨터의 IP를 가져 와서 서브넷 마스크와 AND 한 다음 서브넷 마스크의 역함과 OR하는 것입니다. 또는 글로벌 브로드 캐스트 주소 255.255.255.255 만 사용하십시오.하지만 모든 방화벽/라우터가이를 통과 할 수있는 것은 아닙니다. –

2

이렇게하려면 두 가지 방법이 있다고 생각합니다.

  1. 클라이언트와 서버가 서로 연결할 수 있도록 "로비"를 만듭니다.

  2. 서버는 UDP 패킷을 브로드 캐스트합니다. 클라이언트는 서버 목록을 수신하고 업데이트합니다. 당신은 빠르고 쉬운 방법이 필요하면

, 두 번째 옵션은 큰하지만 각 클라이언트에 대해 한 번만 사용으로 UDP 패킷의 대부분이 낭비됩니다 remeber 될 것이다.

첫 번째 옵션은이 문제에 대한보다 일반적인 일반 솔루션입니다. 그러나 설계하고 구현하는 데 더 많은 시간이 필요할 수 있습니다.