我用 Java 开发了一个由两部分组成的应用程序,一个服务器应用程序和一个客户端应用程序。该客户端是为 Android 构建的。我启动服务器,运行 Android 客户端,然后将运行服务器的机器的 IP 输入到客户端,以便它可以连接。
一切正常,但仅适用于某些 IP 地址!当地址例如“128.180.xxx.xxx”时,它会工作,但如果它是“128.180.xxx.xx”(少一位),则连接超时 - 它无法呈现它。
这是一个已知的现象吗?还是我只是错误地渲染了 IP?谢谢!
-----更新----- 通过将服务器操作从 PC 切换到 Android,我能够改善结果——但有些 PC 不能工作;在wifi上时,似乎。这是相关代码(请忽略我草率的错误处理):
从 pc 端(作为客户端)
try {
Scanner s = new Scanner(System.in);
String ipa = s.next();
socket = new Socket(ipa, 8888);
// Open input and output
out = new PrintWriter(socket.getOutputStream(), true);
in = new DataInputStream(socket.getInputStream());
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
从 Android 端(充当服务器)
ServerSocket serverSocket = null;
int portnum = 8888;
try {
Log.v("client", "Server socket set up");
serverSocket = new ServerSocket(portnum);
} catch (IOException e) { // If can't open port
Log.v("client", "Could not listen on port " + portnum);
e.printStackTrace();
System.exit(1);
}
try {
clientSocket = serverSocket.accept();
Log.v("client", "Client socket accepted.");
Log.v("client", "Connect: attempting output stream initialization");
dataOutputStream = new DataOutputStream(clientSocket.getOutputStream());
Log.v("client", "Connect: attempting input stream initialization");
dataInputStream = new DataInputStream(clientSocket.getInputStream());
Log.v("client","Connect: stream initialization complete");
} catch (IOException e) {
Log.v("client", "Accept failed.");
System.exit(1);
}
这就是建立连接的所有代码。就像我说的,它作为一般情况起作用。