1

サーバー アプリケーションとクライアント アプリケーションを使用して、Java で 2 つの部分からなるアプリケーションを開発しました。クライアントは Android 用に構築されています。サーバーを起動し、Android クライアントを実行し、サーバーを実行しているマシンの IP をクライアントに入力して接続できるようにします。

すべて正常に動作しますが、特定の IP アドレスに対してのみです! アドレスがたとえば "128.180.xxx.xxx" の場合は機能しますが、"128.180.xxx.xx" (桁数が 1 つ少ない) の場合、接続がタイムアウトになり、レンダリングできません。

これは既知の現象ですか?または、IP を正しくレンダリングしていないだけですか? ありがとう!

-----更新------ サーバー アクションを PC から Android に切り替えることで、結果を改善することができました -- ただし、一部の PC では動作しません。Wi-Fiのときは、どうやら。関連するコードは次のとおりです(私のずさんなエラー処理は無視してください):

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

}

接続を確立するコードはこれだけです。私が言ったように、それは一般的なケースとして機能します。

4

2 に答える 2