0

毎回 RGB カラーを送信する高速なソケット クライアントを作成しようとしています。より高速な呼び出しは 1 秒あたり 1 ~ 10 回である必要があります。

私はこのコードを使用しています:

try {
        socket = new Socket("192.168.0.9",1234);
        try {
              dataOutputStream = new DataOutputStream(socket.getOutputStream());


            //toServer = new BufferedWriter(new PrintWriter(socket.getOutputStream(),true));
            //out = new PrintWriter(new BufferedWriter(
            //      new OutputStreamWriter(socket.getOutputStream())), false);              
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    } catch (UnknownHostException e1) {
        Log.e("Error", "Error");
        e1.printStackTrace();
    } catch (IOException e1) {
        Log.e("Error", "Error");
        e1.printStackTrace();
    }

そして、ピッカーから色を変更するたびに、このメソッドを呼び出しています

dataOutputStream.writeUTF(";"+red+";"+green+";"+blue+";"+brightness+";");

同じことを 2 秒間で 100 回実行するスクリプトを python で試しましたが、ラグはありません。私が得ているのは、pythonサーバーが新しいリクエストを待っているが、Androidがソケット接続を介してそれらを送信するのに時間がかかるということです. 出力書き込みをインスタンス化するために実際に3つの異なる方法を試しましたが、DataOutputStreamのみが十分に高速ですが、まだ遅延があります。

この問題を解決する最善の方法は何ですか?

4

1 に答える 1

0

DataOutputStream とソケットの間に BufferedOutputStream を配置し、各 writeUTF() の後に DOS をフラッシュします。ピアでは、BufferedInputStream よりも DataInputStream を使用します。

于 2013-02-23T23:29:21.647 に答える