연결을 설정하고 제대로 작동하는지 확인하기 위해 (처음에는 간단한) 서버 클라이언트를 프로그래밍하려고합니다. 그리고 그렇게합니다. 나가 나의 자신의 4 개의 벽 또는 네트워크 안쪽에 체재하는 한. 라우터 IP를 통해 연결하려고하면 클라이언트는 훌륭한 오류 메시지를 생성합니다. 모든 일반적인 용의자가 제거되었습니다 : 라우터 포트 포워딩이 켜져 있고, 방화벽이 간섭하지 않습니다 (글쎄, 나는 그것을 꺼도 작동하지 않습니다). 그리고 canyouseeme.org는 내가 선택한 곳과 연결할 수 있다고 말합니다 포트에서 실행됩니다.Java 네트워킹 서버 - 클라이언트 오류
다음은 서버의 소스 코드입니다. 약간의 telnetting을 사용하여 명령 줄을 통해 이동하는 것이 가능하다는 것을 알았 기 때문에. I 연결을 설정하려고하면 , 그냥 말한다 Could not open connection to the host, on port 49163:Connection failed
서버 :
import java.net.*;
import java.io.*;
public class ChatServer {
public static void main(String[] args) throws IOException {
ServerSocket server = null;
try {
System.setProperty("java.net.preferIPv4Stack" , "true");
server = new ServerSocket(49163);
} catch (IOException e) {
System.err.println("Could not listen on port: 49163.");
System.exit(1);
}
Socket client = null;
try {
client = server.accept();
} catch (IOException e) {
System.err.println("Accept failed.");
System.exit(1);
}
PrintWriter out = new PrintWriter(client.getOutputStream(), true);
BufferedReader in = new BufferedReader(newInputStreamReader(client.getInputStream()));
String inputLine;
String outputLine;
out.println("Connection established");
while ((inputLine = in.readLine()) != null) {
if (inputLine.equals("exit")) {
break;
}
outputLine = inputLine;
out.println(outputLine);
}
out.close();
in.close();
client.close();
server.close();
System.out.println("Server offline");
}
}
이 오, 그래, preferIP4vStack 내가 유래에 집어 일이었다, 그러나 나를 위해 작동하지 않습니다.
어떤 이유인지 나는 클라이언트 코드를 삽입 할 수 없기 때문에 서식에 관한 메시지를 계속 받고 있으며 알아낼 수 없습니다. 하지만 내가 보는 방법은 명령 줄을 통해 연결할 수 없다 ("실제"IP에 연결하려고 시도 할 때) 클라이언트가 참여하지 않아도된다는 것입니다. 하지만 어쨌든 오류를보고 싶은 사람 :
이java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(Unknown Source) at java.net.PlainSocketImpl.connectToAddress(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at ChatClient.main(ChatClient.java:12)
예외를 발생시키는 (클라이언트?) 코드를 게시 할 수 있습니까? 또한 예외를 던지고있는 것과 동일한 스타일을 유지한다면 사용자 친화적 인 메시지 외에도 전체 스택 추적을 인쇄하는 것이 도움이 될 수 있습니다. – Windle
비샬, 어떻게 알았습니까? –
@NikolaiNFetissov : 내 실수. OP가 올바르게 언급 한 오류를 겪으면서 일부 탈출구가있었습니다. –