0

私はと働いていAndroidます.Net(C#)Android経由で PC に画像 (png) を送信したいのですTCP socketが、PC は常に 1 つの画像しか受信しません。私を助けてください!

Android コード(このコードはメソッド内にあり、何度も呼び出します):

    outputStream = socket.getOutputStream();
    File f = new File(filePath);

    byte[] buffer = new byte[(int) f.length()];
    FileInputStream fis = new FileInputStream(f);
    BufferedInputStream bis = new BufferedInputStream(fis);
    bis.read(buffer, 0, buffer.length);
    outputStream.write(buffer, 0, buffer.length);
    outputStream.flush();
    outputStream.close();

C# コード(画像を取得するために、このコードも何度も呼び出します):

    Socket s = 
        new Socket(
        AddressFamily.InterNetwork, 
        SocketType.Stream, 
        ProtocolType.Tcp);
    s.Connect(new IPEndPoint(IPAddress.Parse(txtIPAddress.Text), 8002));
    Bitmap bitmap = new Bitmap(new NetworkStream(s));

更新: 私の Android アプリケーションは、時々スクリーン ショットを撮り、PC エージェントに転送して表示します。そのため、キャプチャした画像ごとに個別のソケットを作成すると不便です。右?

4

2 に答える 2

1

現在のデザインでは、おそらく1つの画像しか処理できない可能性があります。プロトコルフォーマットを設計してください。例えば、

番号。画像の数n(4バイト)、長さ1(4バイト)、画像データ1(N1バイト)、長さ2、画像データ2(N2バイト)、...、長さn(4バイト)、画像データn(Nnバイト)

于 2012-09-18T03:55:24.613 に答える
0

一度に 1 つのイメージのみをストリームに書き込み、それを閉じます。アンドロイドが画像を送信するように求められる方法によっては、プロセスを最初からやり直して、同じ最初の画像を何度も何度も書き込んでいる可能性があります。

linquizeのソリューションを試して、送信する1つの大きな応答を作成するか、Androidにどの画像を書き込むかを伝える何らかの変数を追加してみてください。次に、各画像を個別の書き込みとして書き込むことができるはずです。

于 2012-09-18T04:07:59.593 に答える