Sockets
및 ServerSockets
으로 작업하려면 Java로 전함 게임을 만들었습니다. 이 게임은 LAN에서 잘 작동하지만 완전히 다른 네트워크에있는 사람과 게임을하고 싶습니다. 포트 포워딩은 필요하지만, 게임을하는 모든 클라이언트에 포트를 포워딩해야합니까? 또는 서버가 사용하는 라우터에서 포트를 전달하는 것만 필요합니까? 감사.자바, 게임 및 포트 포워딩
답변
포트 전달은 서버에서만 필요합니다. 클라이언트에 바인딩 된 모든 패킷은 많은 NAT에 대한 조치 덕분에 초기 요청에서 자동 전달됩니다.
그래서 서버의 포트만 전달하면됩니다. Socket
과 ServerSocket
을 사용하는 경우 라우터에서 선택 사항을 제공하면 TCP를 전달해야합니다. DatagramSockets
을 사용하는 경우 두 끝점에서 UDP를 전달하십시오.
가 무슨 말을 @hexafraction에 자세히 설명하려면 (당신은 당신이 가장 가능성 포트 80을 전달하지 않고이 페이지를 읽고되지 않았을 클라이언트에 전달했다 경우), 여기에 당신이 할 수있는 작업은 다음과 같습니다
모든 클라이언트가 연결할 수있는 서버를 빌드하십시오. 클라이언트는 일반적으로 원하는 모든 것을 연결할 수 있습니다. 방화벽은 일반적으로 유입 될 수는 있지만 유출 될 수없는 정보에는 제한을 두었습니다. 따라서 클라이언트가 연결할 서버를 알고 있으면 방화벽을 수정하지 않고 연결할 서버에 연결 한 다음 서버가 클라이언트간에 데이터를 전송하도록 조정합니다.
특히 UDP 관련 정보가있는 NAT에 대한 정보도 추가합니다. – hexafraction
@ hexafraction 당신은 이미 가지고 있습니다, 나는 단지 정교합니다. –
나는 이것을했는데 내가해야만하는 것은 내가 라우터에서 사용하고 있던 항구를 나의 지역 I.P. 주소. 로컬 IP 주소를 모르는 경우 명령 프롬프트를 실행하고 (Windows 사용을 전제로) ipconfig를 실행하여 알아냅니다. 가정에서 무선 라우터를 사용하여 192.168.1.1 브라우저에 액세스하면 희망이 도움이!
답변을 주셔서 감사합니다. – rstumbaugh