サーバー アプリケーションとクライアント アプリケーションを使用して、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);
}
接続を確立するコードはこれだけです。私が言ったように、それは一般的なケースとして機能します。