2013-04-30 3 views
2

저는 약간의 서버/클라이언트 프로젝트에서 작업 중이며 약간의 문제로 인해 진행이 방해 받고 있습니다.외부 IP로 연결을 시도 할 때 연결이 거부되었습니다.

나는 핵심 프로그램 (클라이언트와 서버) 못을 박았다 생각하고 나는 localhost를 사용하여이 둘을 연결하는 관리하지만 난 내 외부 IP를 통해 연결하려고 할 때 예외가 얻을 : 처음

java.net.ConnectException: Connection refused 
java.net.PlainSocketImpl.socketConnect(Native Method) 
java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) 
java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) 
java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) 
java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432) 
java.net.Socket.connect(Socket.java:529) 
java.net.Socket.connect(Socket.java:478) 
java.net.Socket.<init>(Socket.java:375) 
java.net.Socket.<init>(Socket.java:218) 
networking.Client.run(Client.java:183) 
java.lang.Thread.run(Thread.java:680) 

을 나는 포트 10을 사용하여 시도했지만 0에서 1023 사이의 포트가 어떤 이유로 Mac에서 작동하지 않는다는 것을 알았으므로 그 범위를 벗어난 포트를 선택했습니다. localhost으로 연결했지만 외부 IP로 연결을 시도했을 때 (일반 사용자처럼) 예외가 발생했습니다. 내 포트가 올바르게 전달되고 sudo lsof -i tcp -nP (Mac의 경우 netstat)을 실행하면 실제로 내 서버가 실제로 올바른 포트에서 수신 대기중인 것으로 표시됩니다. 이것은 제가 고객에게 문제가 될지도 모른다고 생각하게합니다. 그러나 저는 정말로 모릅니다.

COMMAND  PID   USER FD TYPE    DEVICE SIZE/OFF NODE NAME 
java  35423 MeshulamSilk 41u IPv6 0xc949f3cdb29dfdcd  0t0 TCP *:63370 (LISTEN) 
java  35423 MeshulamSilk 42u IPv6 0xc949f3cdbbf1b96d  0t0 TCP [::1]:63992->[::1]:63991 (TIME_WAIT) 

나는이 게시물 그래서 요점에 코드를 업로드 좀 혼란스러워 알고 여기

은 Terminal.app에서 sudo lsof -i tcp -nP 출력됩니다. 누구든지 나를 여기에 추가하고 싶다면 알려주십시오.

The code for both the server and client can be found here.

몇 가지 참고 사항 :

  • MooConsole 내 보낸 프로그램의 콘솔을 제공 내가 쓴 라이브러리입니다. 내 클라이언트와 서버 모두에서 텍스트를 표시하는 데 사용합니다.
  • MooCommands는 콘솔에서 실행할 수있는 명령을 나타내는 내 라이브러리 중 하나입니다.
  • SocketThread는 새로운 연결을 처리하는 클래스입니다. 이렇게하면 서버가 여러 클라이언트를 동시에 연결할 수 있습니다. 그것은 java.lang.Thread을 확장합니다. 나는 그것이 문제를 일으키고 있다고 생각하지 않아서 나는 그것을 포함하지 않고 있지만 필요한 경우 할 수있다.
  • Operations.DISCONNECT은 연결 끊김을 나타내는 열거 형 상수입니다.

누구든지 내가 뭘 잘못하고 있는지, 아니면 내가 무엇을하고 있는지 간단하게 알지 못한다면 알려주세요. 감사하게 생각합니다.

+0

방화벽? 권한? Mac OS가 제공된 포트 – MadProgrammer

+0

에서 연결을 적극적으로 거부 할 수 있습니다. Windows에서이 포트를 사용해도 동일한 문제가 발생했습니다. 나는 이것이 OS 문제라고 생각하지 않는다. –

+0

여전히 방화벽 문제 일 수 있습니다. 로컬 네트워크 내에서 또는 외부에서 (웹/VPN에서) 연결하려고합니까 – MadProgrammer

답변

0

저는 Mac의 전문가는 아니지만 lsof의 결과를 기반으로하면 프로그램이 IPv6 전용 주소에 바인딩되어있는 것처럼 보입니다. localhost에서는 잘 작동하지만 공용 IP 주소 (및 IPv4 사용)를 시도하면 문제의 원인이 될 수 있습니다. 포트 번호에 관해서는, OS와 같은 UNIX의 경우 1024 이하의 사용자 포트에 루트 액세스 권한이 있어야합니다. 어떤 방법 으로든 Mac에서 IPv6을 비활성화하고 문제가 계속되는지 확인해야합니다.

관련 문제