2012-04-20 7 views
7

(私が尋ねる前に検索したが、私は唯一の最速のJava IPC技術を見つけることができる)接続された2台のコンピュータ間で最速の方法でパケットを送信しますか?

Windows上で、(1本のイーサネットケーブルで接続された)は、Javaでの2台のコンピュータ間でパケットを送信するためにJavaで最速の方法は何ですかLinux(回答がOSごとに異なる場合)

私はUDPが(TCPのスリーウェイハンドシェイク方式のおかげで)TCPよりも速いと推測しましたが、他に考慮すべきことがありますか?

私たちはソケット(Unix-specificc answer?)に限定されていますか、あるいは選択肢がありますか?できるだけ速くUDPを送受信するためには、どのような技術を使用できますか?

同様に、別のコンピュータから送信されたデータを受信して​​読み取る特定の高性能な方法がありますか?

+4

"close"に投票するつもりなら、少なくとも理由を説明してください。この質問は完全に有効です。 – user997112

+1

「高速」を定義します。待ち時間やスループットが心配ですか?時々データが失われても構わないのであれば、UDPは問題ありません。 – user949300

+1

@ user949300レイテンシーが重要です – user997112

答えて

2

接続/切断の待ち時間を無視すると、TCP/UDPの間にあまり違いはありません。あなたのプロトコルがTCP接続を維持し、Nagleアルゴリズムのような不適切なレイテンシを誘発する最適化を無効にすることができれば、TCPを解決策として打ち破らなければならない理由は分かりませんが、プロトコルをオンにするというわずかな複雑さがあります1バイトより大きなメッセージを交換する。

ほとんどのネットワーク速度と遅延のパフォーマンスは、通常、phyとルートの制約によって制限されます。 2つのピア間で1つのパケットを見ると、ドギールータ、C-限定衛星リンク、混雑したファイバ、ノイズの多い再送信されたマイクロ波/ wifi/3Gリンク、とにかくマイル銅があなたを詰め込むでしょう。

+1

ナグルのアルゴリズムを無効にすると、TCPの実装をコピーして編集する必要がありますか? – user997112

+0

@ user997112 - いいえ、ソケットオプションです。これをオフにすることができます。 –

+0

マーティンに感謝します。私はこれがUnixでのみ設定可能であると推測しますか? – user997112

0

答えはcourier pigeonです。他の選択肢には、スニーカーネットとオートネットがあります。私はbicyclenetが好きです。

関連する問題