2016-07-25 2 views
0

Thisも同様の回答ですが、私が正確に望むものではありません。私は次の2つのことをしたい:Java:Non-Blocking TCP SocketChannelに書き込まれたすべてのバイトが受信者に送信されたかどうかを調べるAPI?

  1. すべてのバイトが受信者に送信されているかどうか調べたいのですか?
  2. また、ソケットの出力バッファの現在の残り容量を知りたいと思いますが、書き込みを試みることはありませんか?

答えて

0

ためにあなたの番号のポイントを取る:あなたはそれを見つけることができます

  1. 唯一の方法は、ピアアプリケーションは、受信を確認することによってです。
  2. JavaにはこのようなAPIはありません。私が知る限り、BSDソケット層にも1つもありませんが、Linuxの限界をよく知っているわけではありません。
+0

バッファが空であるかどうかをチェックする(真偽の応答)だけの簡単なAPIはありますか? – PHcoDer

+0

このようなAPIはどのような形式でもありません。 – EJP

0

あなたはわかりません。データは、OSとTCP/IPスタックによって潜在的にバッファされており、実際にワイヤに配置されているかどうかを判断する方法はありません。それがワイヤー上に置かれたことを知っていても、輸送中に失われる可能性のあるものは保証されません。

UDPの場合、リモートシステムがデータを確認するようなUDPベースのプロトコルを作成しない限り、データが宛先システムによって受信されたかどうかはわかりません。

TCPの場合、転送中にデータが失われた場合にコードが通知されますが、確認を受け取るまでに数秒かかることがあります。

関連する問題