2012-10-10 3 views
0

두 컴퓨터가 함께 연결되는 간단한 게임을 만들었습니다. 같은 컴퓨터에서 테스트했는데 문제 없습니다. ad-hoc 네트워크를 만들 때 (Windows 7). 하나의 컴퓨터가 서버, 그것은 성공적으로 생성이 라인에Java : 소켓을 사용할 때 ad-hoc을 통해 다른 컴퓨터에 연결할 수 없습니다.

sock = new Socket("localhost", PORT); 

을 실행

ssock = new ServerSocket(PORT); 
sock = ssock.accept(); 

그리고 하나의 컴퓨터가 클라이언트입니다. 이 오류를받은 :

java.net.ConnectException : 연결이 거부 : java.net.PlainSocketImpl.doConnect에서 java.net.PlainSocketImpl.socketConnect (기본 방법)에 (PlainSocketImpl.java:351)를 연결 에서 java.net.SocksSocketImpl.connect (SocksSocketImpl.java:366)에서 java.net.PlainSocketImpl.connectToAddress (PlainSocketImpl.java:213) java.net.PlainSocketImpl.connect (PlainSocketImpl.java:200)에서의 java.net.Socket.connect (Socket.java:529) at java.net.Socket.connect (Socket.java:478) at java.net.Socket (Socket.java:375) at java.net . 소켓. (Socket.java:189) at com.controller.MainController $ GameObject. (MainController.java:78) at com.controller.MainController $ 3.run (MainController.java:180) at java.lang. Thread.run (Thread.java:662)

여기서 잘못된 점을 지적하십시오.

감사합니다 :) 라인

sock = new Socket("localhost", PORT); 

첫 번째 인수가 "localhost"를 연결하려는 컴퓨터의 호스트 이름입니다에서

+3

사이에 방화벽 (OS 방화벽 또는 네트워크 방화벽)이 있습니까? 서버에 연결할 수 있습니까? – SJuan76

+1

서버를 다른 컴퓨터로 옮길 때 클라이언트의 호스트 이름 "localhost"를 대체 했습니까? ("로컬 호스트"는 "로컬 네트워크에있는 컴퓨터"가 아니라 "이 기계"를 의미합니다.) – Philipp

+0

@ 필립 나는 너를 그렇게 많이 이해하지 못한다. 그것은 우리가'localhost'를 사용하지 말아야한다는 것을 의미합니까? – hqt

답변

1

. "localhost"는 항상 현재 컴퓨터를 의미합니다. 서버가 다른 컴퓨터에서 실행될 때 소켓을 찾을 위치를 지정해야합니다.

"localhost"를 다른 컴퓨터의 IP 주소 또는 호스트 이름으로 바꿔야합니다. >

  • cmd 입력하고 Enter 키를 눌러 명령 쉘 및 언론
  • ipconfig 입력하는 명령 셸을 열고 입력 실행 -

    • 시작 : 당신이 모르는 경우, 서버 시스템에서 다음과 같이 Enter

    이제 IP 주소를 포함하여 컴퓨터의 모든 네트워크 어댑터에 대한 구성 정보가 표시됩니다.

  • +0

    입니다.하지만 LAN 용 게임을 만들면 서버를 알 수 없습니다 (누가 서버를 생성하는지에 따라 다릅니다). 그렇다면 두 대의 컴퓨터를 애드혹 방식으로 통신하는 데 차이가 있습니까? – hqt

    +0

    자, 로컬 컴퓨터의 IP 주소와 서브넷 마스크를 확인한 다음 해당 서브넷의 모든 단일 IP 주소에 연결을 시도 할 수 있습니다. ad-hoc 네트워크가 어떤 서브넷 크기의 윈도우를 사용하는지 모르지만, 24 네트워크 일 때 (적절한 의미의 아무도 애드혹 네트워크를 사용하지 않을 것임), 여전히 실행 가능한 255 개의 IP 주소를 확인하십시오. – Philipp

    +0

    방금 ​​창 특별 네트워크가 IP 네트워크 169.254.0.0/16을 사용한다는 것을 알았습니다. 즉, 서버를 실행하기 위해 65536 개의 IP를 확인해야합니다. 이 작업은 몇 분 (또는 병렬 처리 할 때 몇 분이 소요될 수 있지만) 손으로 IP를 찾아서 입력하는 것보다 사용자에게 더 편리 할 수 ​​있습니다. – Philipp

    0

    "localhost"를 원하는 IP 주소로 바꾸는 것 외에도 지적 포트가 방화벽에서 작동하지 않는지 확인하는 것이 좋습니다.