私はAndroidでソケットプログラミングについて学んでいます。私は2つのモバイルデバイスを持っています。両方とも異なるWiFiネットワークに接続されています。私のサーバーアプリケーションは1つのデバイスで動作しており、クライアントアプリケーションは別のデバイスで動作しています。私は別のWiFiネットワークとクライアントにサーバーに接続できません。どうして?
私の助けてください。異なるWiFiネットワーク上のソケットサーバーにソケットクライアントを接続できません
クライアントコード:
class ClientSideThread extends Thread {
String response;
@Override
public void run() {
try {
socket = new Socket("192.168.1.111",8085);
OutputStream outToServer = socket.getOutputStream();
DataOutputStream out = new DataOutputStream(outToServer);
out.writeUTF("hi");
InputStream inFromServer = socket.getInputStream();
DataInputStream in = new DataInputStream(inFromServer);
response = in.readUTF();
out.close();
in.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
response = "UnknownHostException: " + e.toString();
} catch (IOException e) {
e.printStackTrace();
response = "IOException: " + e.toString();
}
}
}
Serverコード:
private class SocketServerThread extends Thread {
@Override
public void run() {
try {
serverSocket = new ServerSocket(socketServerPORT);
while (true) {
Socket socket = serverSocket.accept();
sIpAddress = socket.getInetAddress();
sPort = socket.getPort();
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line;
StringBuilder sb = new StringBuilder();
if ((line = reader.readLine()) != null) {
sb.append(line);
}
message = sb.toString();
printWriter = new PrintWriter(socket.getOutputStream());
printWriter.println(message);
printWriter.flush();
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
String sDisplayMsg = "Replay:" + message;
TextView rowTextView = new TextView(MainActivity.this);
rowTextView.setText(sDisplayMsg);
linearLayout.addView(rowTextView);
}
});
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
サーバーがポートをリッスンしているかどうかチェックしています。クライアントから接続要求が送信されていますか。 –
はい私はチェックして、クライアントコードでソケットタイムアウト例外を取得しています – Siddharthan
クライアント側が出力ストリームを書き込めない場合に発生する可能性があります。サーバー側のsocketServerPORTではなく、ポート番号8085をハードコードします。 –