2010-04-01 8 views
0

저는 현재 자바의 기본 네트워킹에 대해 배우고 있습니다. 두 대의 컴퓨터간에 서버 및 클라이언트 관계를 가지고 놀았습니다. 그러나 분산 된 프로그램 (예 : 비디오 게임)이 '호스트'컴퓨터뿐만 아니라 서버가 실행중인 포트 번호를 통해 두 컴퓨터간에 소켓을 생성하는 방법을 파악할 수 없습니다. Socket을 생성하기 위해 실제로 볼 수있는 유일한 방법은 이미 알려진 IP 주소와 알려진 포트 번호입니다.클라이언트가 서버의 포트 번호를 찾는 방법은 무엇입니까?

LAN 네트워크에서 클라이언트를 검색하는 다른 컴퓨터 (호스트)를 어떻게 검색합니까?

응답을 위해 사용 가능한 모든 포트에 '핑 (ping)'하지 않고 서버가 위치한 포트를 어떻게 결정합니까? (나는 이해할 수있는 나쁜 형식입니다 ... '서버 공격'에 관한 것 ...)?

비디오 게임과 같은 상황에서는 동일한 네트워크에 여러 대의 컴퓨터가있을 수 있으며 그 중 많은 수가 호스트를 호스팅하거나 응용 프로그램을 실행하려고 시도 할 수 있습니다. 다른 중요한 정보, 또는 내가 사용하고있는 것보다 더 자세한 자습서에 대한 언급 일지라도, 클라이언트 측에서 매우 적은 정보만으로 연결을 만드는 것에 대해서는 만족할 것입니다.

많은 감사,

조나단

답변

5

일반적으로 서비스/계획은 주어진 포트 번호 또는 그들이 사용하는 포트 번호의 범위를 (HTTP가, SSH (22)를 사용하는 등 80 사용)이있다. 또한 자신의 존재를 알리고 다른 노드 (예 : Battle.net)에 대해 알기 위해 "마스터"서버에 연결할 수 있습니다.

Zeroconf를 사용하는 경우 (Bonjour, Avahi 등을 통해) 엄격하게 필요하지 않습니다. Zeroconf는 기계가 전통적으로 DNS에 사용 된 pointcast 메커니즘 대신 LAN에서 멀티 캐스트 DNS를 수행 할 수있게합니다. 이를 통해 네트워크를 통해 mDNS를 지원하는 시스템을 검색하고 네트워크에서 실행중인 서비스를 검색 할 수 있습니다.

+0

그러면 두 컴퓨터 간의 연결 이외에 위치를 고정 (인터넷을 통해)하는 다른 서버에 연결하여 서로를 '찾으십시오'라고 말하고 있습니까? – Jonathan

+0

주소가 사용자에 의해 명시 적으로 제공되지 않으면 yes입니다. 호환 가능한 소프트웨어를 실행하는 다른 컴퓨터를 찾기 위해 전체 인터넷을 검사하는 것은 비현실적입니다. –

+0

로컬 영역 네트워크로 작업하고 있지만 귀하의 요점은 사실과 무관합니다. 고맙습니다. – Jonathan

관련 문제