2012-02-04 18 views
1

私はC#のサブネット上のすべてのIPに短いメッセージを送信したいと考えています。私はTCPClientを使用しています。問題は、そのIPを使用するものがない場合、TCPClient.Connect()関数が例外をスローするのに20秒かかることです。可能であれば、数ミリ秒程度のものを望んでいます。C#の複数のIPアドレスにブロードキャスト

私が実際に探しているのは、それぞれのアドレスに2バイトを送信し、特定のものからACKを受信することだけです。明示的にConnect()、TCPClientを使用せずにこれを行う方法がある場合は、わかっていないConnectionタイムアウトを設定するだけでも、簡単に代わりに切り替えることができます。

私はこのプログラムを複数のコンピュータで実行しようとしています。このブロードキャストは、各インスタンスが他のインスタンスのIPを知るように使用されます。だから私が必要とするのは、識別のために2バイトを送ることだけです。

+0

UDPを使用できますか?どのようなタイプのメッセージを送信する必要がありますか? [C#ソケット接続タイムアウト](http://stackoverflow.com/questions/1062035/how-to-config-socket-connect-timeout-in-c-sharp) – drew010

+0

私はUDPを使用することができます。私はカップルバイトを送るだけです。それは速いですか? – user912447

答えて

4

代わりにUDPアドレスでブロードキャストしないでください。クライアントがそのアドレスでリッスンしている場合、(TCPのような保証はしていませんが)メッセージが届かない場合、ブロードキャスタは気にしません。それはあなたが必要とするように聞こえるシナリオを聞いて誰にでもブロードキャストのUDPです。

+0

UPDが接続する、または接続失敗を速く報告する? – user912447

+1

@ user912447いいえ。 UDPには* no *の接続があります。あなたはちょうどデータを "発火させ、忘れて"しまいます –

+0

美しい。私はそれと一緒に行くだろうと思う。とても有難い。 – user912447

1

実際にレスポンスを早急に返す必要があるかどうか、またはプログラムに戻る制御が必要かどうかによって、非同期で実行できます。

関連する問題