私は現在、TCP/IP ソケット接続を介してエミュレーター (クライアント) と電話 (サーバー) を接続しようとしています。しかし、どういうわけか機能しませんが、エミュレーターを(クライアント/サーバーとして)内部Javaプログラム(クライアント/サーバーとして)に接続しようとすると正常に機能し、電話からエミュレーターにないアプリケーションへのソケット接続も正常に機能します。ポートフォワーディングと関係があると思ったので、試してみました:
からソースローカルホストの IP アドレスを Android エミュレーターに転送するにはどうすればよいですか
telnet localhost 5554
redir add tcp:1337:12345
しかし、ポート番号 1337 とサーバー側 12345 でクライアント側をテストすると、まだ機能せず、サーバー コードはクライアントの要求を .accept() しません。
以下は、ioストリームを受け入れて設定するためのクライアント(エミュレーター)とサーバー(電話)のコードです
クライアント:
SERVER_IP はローカル IP アドレスです
connection = new Socket(SERVER_IP, PORT);
private void setUpStreams() throws IOException {
output = new ObjectOutputStream(connection.getOutputStream());
output.flush();
input = new ObjectInputStream(connection.getInputStream());
}
サーバ:
これは、ユーザーのプライベートを受け入れるためのものです。
try {
ss = new ServerSocket(PORT, 10);
connection = ss.accept();
connected = true;
osm.updateInChatStatus(1);
} catch (IOException e) {
// TODO Auto-generated catch block
Log.i("serv", "Wasn't able to connect with any clients!: " + e);
}
}
ストリームの設定は、クライアントのものとほとんど同じです。あなたのアドバイスと解決策を前もって感謝します。