私はC言語のソケットプログラミングを学んでいますが、問題なくサーバとクライアントがメッセージをやりとりしていますが、それが受け取るはずのたくさんのバイト。割り当ての一部は、チェックサムを含むヘッダーを作成することです。このヘッダーは、number_of_bytes_sent%32のバイナリー形式でなければなりません。ヘッダーを作成して送信するサーバーがありますが、どのように私はその情報から受け取るはずのバイト数を得ることができます。サーバからデータを取得するときにどれだけ受信するかを知っている
1
A
答えて
2
両サイドにバッファリングする必要があります(放射と受信)。依頼と返信がどのように整理されるかについては、の規約を持っている必要があります。アプリケーションレベルでは、あなたのプロトコルは、応答または要求(より一般的にはアプリケーションメッセージ)がどこで開始および終了しているかを知る必要があります。例についてはHTTPとSMTPを調べてください。
TCPソケットは、メッセージ境界なしののストリームだけであることを覚えておいてください。
したがって、クライアントは1キロバイトの1つのフラグメントの単一メッセージを正常に受信し、サーバーはrecv
それぞれ512バイトの2つのフラグメントになります。逆も起こり得る。断片化はランダムなので再現性はありません。
ルーター - おそらくWifiのものは、TCP/IPパケットを断片化できます(場合によってはそれらを連結して断片化することもできます)。
0mqのようなライブラリがあります(また、free softwareなので、ソースコードを調べる必要があります)。 HTTPライブラリ(クライアント側のlibcurl、サーバ側のlibonion)も見てください。
自分でソケットを実装する場合は、poll(2)とsocket(7)(およびtcp(7)とunix(7))を読んでください。
私は私はおそらくあなたがあなたのアプリケーションプロトコルを定義するように求められ
を受け取ることになってるバイト数を取得することができます方法についての困惑ビットです。次に、アプリケーションのヘッダーにメッセージ(またはコンテンツ)の長さを入れることができます。 Content-length:
の属性はHTTP headersになっています。
関連する問題
- 1. omdbapiからデータを受け取って表示するときに[オブジェクトオブジェクト]を取得する
- 2. レスポンス本文を受け取っているときにXMLHttpRequestを取得する
- 3. HTMLからデータを受け取り、Excelに送信するにはどうすればいいですか?
- 4. サーバからデータを取得する
- 5. プッシュ通知の受信時にデータを取得する - ionic3
- 6. 受け取った入力に基づいてJSONからデータを取得
- 7. サーバからフォームエラーを受信する
- 8. APNSサーバ(iOS)から送信されたプッシュ通知のリストを取得する
- 9. クライアントからデータを受け取っているときにJSONスキーマを照合する
- 10. 返信を受け取っていないサブプロセスを取得しますか?
- 11. GETメソッドからデータを受け取っているときにPOSTメソッドでデータを送信できないのはなぜですか?
- 12. サーバがクライアントからシードを持っている以上のデータを受信するのは奇妙です
- 13. サーバからのBLOBレスポンスを受け取ったときに、プロンプトブラウザウィンドウに値を設定するには?
- 14. システムコマンドからデータを受け取るエリクサー
- 15. Perlソケットプログラミングでクライアントからデータを受信してサーバから受信する方法
- 16. サーバからデータを取得
- 17. libpqxxを使ってPostgreSQLデータベースから通知を受け取るには?
- 18. ユーザーがプッシュ通知の受信を受け付けない場合、iOS 10でデバイストークンを取得するにはどうすればよいですか?
- 19. URLSessionから受信したデータを取得する方法を教えてください。
- 20. 受信の受信を停止するプロセスがどのように知っていますか?
- 21. シリアルコミュニケーションから受け取ったデータを2つのarduino unoを使って配信する
- 22. 通知を受け取っていればアンドロイドアプリはまだバックグラウンドで実行されていますか?
- 23. オブジェクトから必要なデータだけを取得する方法
- 24. 希望のviewControllerに通知する通知を受け取るにはどうすればよいですか?
- 25. addItemまたはitemChangeでQGraphicsSceneから通知を受け取るにはどうすればいいですか?
- 26. GCMプッシュ通知(コルドバ)を受け取ったときにアプリをフォアグラウンドにする
- 27. 1人のサブスクライバだけがサーバからの応答を受け取ります
- 28. Djangoサーバがiosから認可トークンを受け取っていない - ネイティブの
- 29. シグナルハンドラを使用してfifoから受け取ったデータを処理する
- 30. サービスワーカーがキャッシュからデータを取得していることを知るには?
非常に助かりました、ありがとう! – Telanore