3

私は現在、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);
        }
    }

ストリームの設定は、クライアントのものとほとんど同じです。あなたのアドバイスと解決策を前もって感謝します。

4

1 に答える 1

0

ネットワーク接続にアクセスするには、AndroidManifest.xml でパーミッションを設定する必要があります

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.bosch.adx.esidroid">
    <uses-permission android:name="android.permission.INTERNET" />
<application
--
于 2016-05-20T16:50:09.307 に答える