私はアンドロイドクライアントからPythonサーバーにtcpソケットを介して複数のデータ項目を送信しようとしています。クライアント側のユーザーは、複数の選択肢を作ることができるので、文字で送信された番号を使用して要求タイプを区別します。私は選択肢に応じて選択肢と特定のデータを送信しなければなりません。現在の選択肢(この場合は選択肢1)には選択肢と2つの文字列フィールドと画像が必要です。私は自分自身で画像転送を行い、それ自身で作業する選択肢を持っています。私が今問題を抱えているのは、選択したバッファの読み込みが、その直後のイメージのバイトストリームでも読み取られていることです。区別可能なソケット入力
0
A
答えて
2
TCPは、パケットが送信される前に書き込まれた場合、書き込みを1つのパケットにまとめます。つまり、情報は連結された状態で受信されます。
一般的な解決策は、データの前に「オペコード」を組み込むことです。 たとえば、整数を送信する前に接頭辞CHOICEを指定します。 PythonスクリプトでCHOICEを読むと、整数を受け取っていることが分かり、その分だけ多くのデータを読み取ることができます。 イメージを送信する前に、IMGと読み込むバイト数の接頭辞を付けます。このようにして、必要なバイト数だけ読み込み、次のオペコードを探します。
あなたのパケットは、このようになります。
CHOICE1IMG<number of bytes><image bytestream>
は明らかにあなたのオペコードは、あなたが望むものは何でもすることができ、これは単なる一例です。
関連する問題
- 1. プログラムでユーザーキー入力とプログラムキー入力を区別できますか?
- 2. 機能入力は可能に異なる種類
- 3. .data.relセクション内で再配置可能なシンボルと再配置不可能なシンボルを区別する方法
- 4. ActiveRecordの区別が機能しない
- 5. Tapestry5スクロール可能なページ区切り
- 6. サイズ変更可能な柔軟な入力フォーム
- 7. 入力、出力、およびコマンドを区別するターミナルプログラムはありますか?
- 8. Rails:設定可能な入力数を持つフォーム
- 9. Razor Template Engineにヌル入力可能なタイプを印刷する
- 10. 利用可能なフィールドリストに入力するSSRSパラメータ
- 11. 入力でのノー実行可能な代替案 - ANTLR
- 12. PDFから入力可能なPDFを作成する
- 13. カスタマイズ可能なキーボードショートカットの入力を作成する
- 14. 背景位置入力バー(可能なバグ?)
- 15. イメージを使用して伸縮可能なテキスト入力
- 16. 文字列にデータ化可能なカンマ区切り値を入れよう
- 17. 利用可能なフィルタリング利用可能なタスクグループ別のギャラリストタスク
- 18. オープンな2つの異なるソケット入力ストリーム
- 19. 入力の最初の文字は選択不可能/編集不可能
- 20. これはソケットで可能ですか?
- 21. Java:ソケットで実行可能オブジェクトをクリーンアップ
- 22. VBA:入力キーワードの区切り文字
- 23. Javaソケット - 入力ストリームなしでネットワーク切断を検出する
- 24. 可変数の入力に基づいて可能なすべての出力をキャプチャします。
- 25. Webkitの下でフォーカスを失ったコンテンツ入力可能なdivの入力を停止する
- 26. 以前の入力で以前のプロセスを可能な入力数に適用するスクリプトを変更する
- 27. NPMから解析可能な出力
- 28. C#の出力可能なルート
- 29. 編集可能と非編集可能な入力フィールドと私はテーブルを持っている
- 30. ソケット、利用可能なバイト数を取得する(C#)
こんにちはエリック、私に戻ってくれてありがとう。私はあなたの言っていることを得るが、私はちょうどそれについて最善の方法が行くだろうと確信していない?バイナリデータを含むたくさんの文字列にロット全体を変換して送信するのでしょうか? – Shpongle
私はそれを理解しました。私はデータフィールドのサイズを制限し、それを埋めていなければそのサイズに埋めなければならなかった。私はそれを処理するためにパディングサーバー側を取り除いた。 – Shpongle