2011-01-21 2 views
0

내 게임에 멀티 플레이 지원을 추가하고 싶습니다. 따라서 TcpListener를 열고 요청 연결에 응답하고 "Join Server"단추를 만든 "Create Server" 버튼을 누르면이 버튼이 열려있는 모든 TcpListener의 목록을 표시합니다 (사용자가 연결을 클릭 할 수 있도록) C#에서 이와 관련된 내장 함수가 있습니까?C# 열린 "TcpListeners"목록을 얻는 방법

답변

0

불행히도이 기능은 IP 또는 TCP 사양에 있습니다. IP 나 TCP는 "서비스 위치 지정자"유형의 기능을 제공하지 않습니다.

이 기능을 구현하려면 서버를 실행하는 플레이어가 게임을 찾는 다른 플레이어에게 연결 정보 (IP 주소/포트 번호)를 브로드 캐스트하기위한 방법이 필요합니다. 이는 전통적으로 사용 가능한 게임에 대한 정보를 게시하는 호스트/조정 서버를 통해 수행됩니다.

3

네트워크의 모든 컴퓨터 (또는 전체 인터넷)의 모든 수신기 목록을 원하십니까? 그러면 대답은 '아니오'입니다. 거기에는 내장 함수가 없습니다.

작은 LAN에서는 서버가 자신의 존재를 방영하는 것을 벗어날 수 있습니다. 이것은 게임이 인터넷이 오기 전에 보통 어떻게했는지입니다.

요즘에는 보통 실제 게임을 호스팅하는 모든 서버의 목록이있는 중앙 서버에 연결됩니다.

어느 쪽이든 할 일이 있습니다.

+0

sry 정확하지 않습니다. lan 사용에만 해당 –

+0

그런 경우 클라이언트가 UDP 포트에서 수신 대기하도록하고 서버가 해당 포트에서 현재 상태를 브로드 캐스트하게하십시오. 그러면 클라이언트는 UDP 패킷의 주소에서 서버에 다시 연결할 수 있음을 알게됩니다. 그리고 서버 이름, 게임 유형, 플레이어 수와 같은 일부 데이터를 패킷에 넣을 수 있습니다. – Thomas

0

로컬 영역 네트워크로 제한하는 경우 게임 서버가 수신 대기하는 포트에서 브로드 캐스트 할 수 있으며 일종의 등록 메시지로 회신하도록 설정할 수 있습니다.

게임을 방해하지 않으려면 게임을 분리하고 별도의 등록 서비스를 받아 게임이 수신하는 다른 포트에서 수신 대기하십시오.

관련 문제