C socket()
/recv()
の背景から、Java DatagramSocket.receive APIはちょっと変わったようです。プログラマが受信データ用に十分な大きさのDatagramPacket
を割り当てるように強制するのはなぜですか?Java:DatagramSocketの `receive`メソッドがメッセージを切り捨てるのはなぜですか?
1
A
答えて
4
この質問は、誤った前提に基づいています。 Cにおいて、recv
システムコールのための署名がある:
ssize_t recv(int s, void *buf, size_t len, int flags);
もしバッファへのポインタを渡す注、そのバッファの長さ。
メッセージが長すぎて、指定されたバッファに収まらない場合は、メッセージが受信されたソケットのタイプによって余分なバイトが破棄されることがあります。言い換えれば
、CのAPIは、呼び出し側は「十分な大きさ」のバッファを割り当てることを期待し、は長いメッセージを切り捨てることがあります... Javaはありません同じように。
+0
私のシステムのマニュアルページは、余分なバイトが破棄されるときにはっきりとしたものではありません...しかし、反映されると、UDPはストリーミングしていないので、未読部分を試して保存するのは賢明ではありません'recvfrom'への次の呼び出しでそれを返します。そして、速い実験によって、これが真であることが証明されました。助けてくれてありがとう。 –
関連する問題
- 1. php://入力を切り捨てるのはなぜですか?
- 2. MPI - MPI_Recvでのメッセージの切り捨て
- 3. C#長いメッセージを切り捨てる
- 4. otoolが逆アセンブリ出力を切り捨てるのはなぜですか?
- 5. JOptionPane.showMessageDialog JTextAreaメッセージを切り捨てます
- 6. receive()メソッドがクライアントからデータを受信しないのはなぜですか?
- 7. なぜtempfile.NamedTemporaryFile()はデータを切り捨てますか?
- 8. NLog自動切り捨てメッセージ
- 9. なぜC#Math.Ceilingは切り捨てられますか?
- 10. 切り捨てではなく切り捨てを行う部分
- 11. 切り捨てラインなしでメッセージos_log_infoフルのMacOSを表示する方法
- 12. HttpConnectionでSony Ericsson W580のメッセージを切り捨てました
- 13. Apache Kafkaでメッセージが切り捨てられました
- 14. なぜ私のajax投稿が切り捨てられていますか?
- 15. sqlite3は私のテキスト列を切り捨てる/切り捨てる
- 16. Mathematicaで切り捨てられたメッセージを見る
- 17. 切り捨てられたプレビューと完全なメッセージを表示
- 18. なぜUINavigationBarは私のUIBuilderの一部を切り捨てますが、テストすると切り捨てられませんか?
- 19. BytesIOを切り捨てると、なぜそれが混乱しますか?
- 20. Amazon RedshiftがこのJSON浮動小数点データの精度を切り捨てるのはなぜですか?
- 21. Blocklayered indexUrlタスクがデフォルトで切り捨てを使用するのはなぜですか?
- 22. MPAndroidChart結合点で切り捨てポイントが切り捨てられます
- 23. 配列のソートと切り捨て/切り捨て
- 24. curlがこのクエリ文字列を切り捨てるのはなぜですか?
- 25. com.mysql.jdbc.MysqlDataTruncation:データ切り捨て:正しくないDOUBLE値の切り捨て: 'q'
- 26. Androidのラジオボタンのテキストが最初に切り捨てられるのはなぜですか?
- 27. POSTデータがPHPによって切り捨てられるのはなぜですか?
- 28. list.pop()メソッドを使用してリストの最後の項目を切り捨てると、インスタンスが「ポップ」しないのはなぜですか?
- 29. doxygenがパラメータ化されたマクロ関数属性を切り捨てるのはなぜですか?
- 30. Oracle 10g to_char(date time)が文字列を切り捨てるのはなぜですか?
したがって、Cの動作は何ですか? –
これは良い質問です...今まで私は 'recvfrom'が残りのデータを引き続き返すと仮定していましたが、実験は私が間違っていることを証明しています。 @Stephen Cの答えに対するコメントを参照してください。 –