- 締切済み
C#のNetWorkStream
C#で最近、ソケットプログラミングを勉強し始めました。 そこで、気になったのですが、 データを送信するときや、受信するときの方式に、 SENDやRECEIVEで送信する方法と NETWORKSTREAMを使って送信する方法が あることがわかりました。 この二つの方式のメリット、デメリット、また違いについて ネットでいろいろと探してみたのですが、納得のいく 回答がなかなか得られずにいます。 よろしければ、ご教授していただけるとありがたいです。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- sayaama
- ベストアンサー率44% (8/18)
回答No.1
MSのサイトには、 > NetworkStream は、ブロッキング モードのときに Stream ソケッ >ト上でデータを送受信するためのメソッドを提供します。 と書いてありますから、ブロッキングモード専用なのでしょう。 ブロッキングモードでRECEIVEすると、データがなければデータがくるまで待つので、関数が戻ってきません。 よって、プログラムがそこで一旦停止することになります。 これを回避する方法として、 1。ブロッキングモードをつかわない 2。ブロッキングモードをつかうけれど、その部分を別スレッドにする のどちらかでしょう。 別スレッドにする方法を、MSのサイトでは『非同期』と呼んでおり、その方法をNetWorkStreamクラスでのメッソッドでは提供しているのでしょう。 またクラスの継承を見ると、Stream系から継承していますから、 他のStream系と同様のI/Fで使えるのでしょう。 本気でソケットを勉強するなら、ブロッキングモードとかは基本的な事項ですから、SEND、RECEIVEから勉強するのもいいと思います^^;