TCP ソケットを使用してリモート サーバーに接続したいと考えています。
クライアントとサーバーが同じネットワークに接続されている場合、すべて正常に動作します。Android クライアントから送信された要求とサーバーからの応答が受信されました。別のネットワークに接続した後、サーバーは Android ホストからメッセージを取得しましたが、応答しませんでした。
無料の Google Play Telnet および TCP アプリケーションを使用してこの接続をテストしていますが、問題なく動作するため、問題は私のコードにあると思います。
public static void onsocket() {
// TODO Auto-generated method stub
Socket socket = null;
try {
socket = new Socket(address, port);
dataOutputStream = new DataOutputStream(socket.getOutputStream());
dataInputStream = new DataInputStream(socket.getInputStream());
dataOutputStream.writeUTF();
Log.w(TAG, "Response from server: " + dataInputStream.readUTF());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
if (socket != null){
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (dataOutputStream != null){
try {
dataOutputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (dataInputStream != null){
try {
dataInputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
また、writeUTF/readUTF (write&flush/read) 以外のメソッドを使用しようとしましたが、同じ結果が得られます。