java 소켓을 사용하여 클라이언트와 서버를 작성했습니다. 두 시스템이 동일한 네트워크에 있습니다. 로컬 IP 주소를 사용하여 연결할 때 문제가 없습니다. 그러나 공용 IP 주소를 사용하면 연결 시간이 초과되고 클라이언트가 "SocketException : connection reset"을 throw하고 서버가 "SocketException : 연결을 피어로 재설정 : 소켓 쓰기 오류"를 throw합니다. 이것은 대부분의 경우 발생하지만 한 번 푸른 달에 연결되면 실제로 성공합니다. 클라이언트 컴퓨터에서 서버의 로컬 주소와 라우터에 성공적으로 ping을 수행 할 수 있습니다.인터넷을 통한 Java 소켓
라우터에 들어가서 서버 컴퓨터에 영구 IP 주소를 할당하고 관련 포트의 모든 트래픽을 해당 IP 주소로 전달했습니다. 불행히도 그것이 문제를 해결할 수 있다고 생각하는 유일한 방법 이었지만 그렇지 않았습니다. 나는 또한 서버에서 Windows 방화벽을 해제했지만 여전히 운이 없다.
클라이언트 : (whatismyip.com에서 가져온 IP)
Socket s = new Socket("xx.xxx.xxx.xx", 27499);
연결합니다.
서버 : 어떤 도움을 주시면 감사하겠습니다
InetAddress ip = InetAddress.getLocalHost();
ServerSocket ss = new ServerSocket(27499, 0, ip);
Socket cs = ss.accept();
. 필요한 경우 더 많은 코드를 제공 할 수 있습니다.
방화벽 문제 일 수 있으며 포트 전달 문제 일 수 있습니다. – MadProgrammer
@MadProgrammer 서버에서 예외가 발생하기 때문에 방화벽 문제가 아닌 것으로 간주 할 수 있습니까? 적어도 몇 가지 통신이 일어나고 있다는 것을 암시 하시겠습니까? – 0nyx
테스트를 위해 방화벽을 비활성화하고 어떤 일이 일어나는지를 먼저 보았습니다. 하지만 연결이 서버로 올바르게 전달되었는지 확인하기 위해 외부 세계에 대한 서버 연결의 포트 전달 설정을 확인합니다. 또한 로컬 컴퓨터를 통해 서버에 1- 연결하려고 시도하고 동일한 컴퓨터에서 서버에 연결하려고합니다. 문제가 없다면 방화벽이 될 가능성은 거의 없지만 방화벽이 차단되어 있으면 계속 될 수 있습니다. 외부 IP 범위 – MadProgrammer