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

时间:2013-11-12 15:18:17

标签: java android sockets

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

一切正常,但某些IP地址!当地址例如是“128.180.xxx.xxx”时,它将起作用,但如果它是“128.180.xxx.xx”(少一个数字),则连接超时 - 它无法呈现它。

这是一个众所周知的现象吗?或者我只是错误地渲染IP? 谢谢!

----- ------ UPDATE 通过将服务器操作从PC切换到Android,我能够改善结果 - 但有些PC无法正常工作;什么时候在wifi上看似。 这是相关的代码(请忽略我的草率错误处理):

从电脑侧(充当客户端)

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);

}

这是建立连接的所有代码。就像我说的那样,它可以作为一般情况。

2 个答案:

答案 0 :(得分:0)

没有。 Java套接字没有办法出现这样的错误。在这些情况下,我通常会寻找简单的愚蠢错误。祝你好运。

答案 1 :(得分:0)

也许您应该ping地址“128.180.xxx.xx”,看看它是否真的可用?

我最近为自己的路由器网络上的计算机编写了一个服务器/客户端应用程序,指定路由器地址作为客户端的输入(192.168.0.xx) - 完全没问题。