Java Socket 连接仅适用于某些 IP 地址

标签 java android sockets

我用 Java 开发了一个由两部分组成的应用程序,一个服务器应用程序和一个客户端应用程序。该客户端是为 Android 构建的。我启动服务器,运行 Android 客户端,并将运行服务器的计算机的 IP 输入到客户端,以便客户端可以连接。

一切正常,但适用于某些 IP 地址!例如,本地址是“128.180.xxx.xxx”时,它将起作用,但如果是“128.180.xxx.xx”(少一位数字),连接就会超时 - 它无法渲染它。 p>

这是一个已知现象吗?或者我只是错误地渲染了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);

}

这就是建立连接的所有代码。就像我说的,它适用于一般情况。

最佳答案

没有。 Java Sockets 不可能存在这样的错误。在这些情况下,我通常会寻找简单的愚蠢错误。祝你好运。

关于Java Socket 连接仅适用于某些 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19932941/

相关文章:

java - org.openqa.selenium.NoSuchElementException : Unable to locate element:- Search field

java - 使用 Java Stream 将参数从 map 方法添加到 foreach 方法

java - Realm 每次添加新数据并保留旧数据

javascript - 错误: 7 PERMISSION_DENIED: Your application has authenticated using end user credentials from the Google Cloud SDK

java - TCP 套接字给出错误的值

java - 在java中从套接字获取输入和输出流的问题

java - 构造函数的 @Inject 问题

java - 在mysql中通过java数组计算列中的行数

android - 这些利润从何而来?

android - Fragment 中的 View 为空