私は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. サーバからデータを取得する
- 3. 受け取った入力に基づいてJSONからデータを取得
- 4. サーバからフォームエラーを受信する
- 5. GETメソッドからデータを受け取っているときにPOSTメソッドでデータを送信できないのはなぜですか?
- 6. サーバがクライアントからシードを持っている以上のデータを受信するのは奇妙です
- 7. システムコマンドからデータを受け取るエリクサー
- 8. Perlソケットプログラミングでクライアントからデータを受信してサーバから受信する方法
- 9. サーバからのBLOBレスポンスを受け取ったときに、プロンプトブラウザウィンドウに値を設定するには?
- 10. サーバからデータを取得
- 11. libpqxxを使ってPostgreSQLデータベースから通知を受け取るには?
- 12. ユーザーがプッシュ通知の受信を受け付けない場合、iOS 10でデバイストークンを取得するにはどうすればよいですか?
- 13. URLSessionから受信したデータを取得する方法を教えてください。
- 14. 受信の受信を停止するプロセスがどのように知っていますか?
- 15. シリアルコミュニケーションから受け取ったデータを2つのarduino unoを使って配信する
- 16. 1人のサブスクライバだけがサーバからの応答を受け取ります
- 17. GCMプッシュ通知(コルドバ)を受け取ったときにアプリをフォアグラウンドにする
- 18. addItemまたはitemChangeでQGraphicsSceneから通知を受け取るにはどうすればいいですか?
- 19. サービスワーカーがキャッシュからデータを取得していることを知るには?
- 20. iOS(バックグラウンド)とリモート通知を受信したときにデータを送信する
- 21. データ変更に関する通知を受け取る
- 22. どのノードが接続されているかだけを知っているバイナリツリーを構築するには?
- 23. KVC/KVOとバインディング:なぜ私は変更通知を1つだけ受け取っていますか?
- 24. PHP rest APIを使ってデータを受け取るにはどうすればよいですか?
- 25. 通知を受け取ったときにPushKitを処理しますか?
- 26. mysqlから新しいデータを受け取ったときにポップアップを表示する方法
- 27. 通知を受け取ったときに鳴るように通知するように設定する
- 28. 通知が通知されたときに通知を受け取る方法
- 29. アンドロイドで受信した通知のコールバックを取得するにはどうすればよいですか?
- 30. PythonからC structを受け取る/取得する方法
非常に助かりました、ありがとう! – Telanore