C# VB.NET TCP/IP ソケット・リーダー

この記事は一般の人には全く意味不明と思いますのでスルーでお願いします。

C#又はVB.NETでTCP/IPの通信プログラムを作成するとき、

System.Net.Sockets.NetWorkStreamクラスを使用して、サーバーや
クライアントの受信コードを作成するとき、受信の部分はどのように
書くのだろうか。
基本的には
NetworkStream stream = server.GetStream();
int intCount = stream.Read(bytes, 0, bytes.Length);
などとしてこの部分をwhile(True)やfor(;;)などの無限ループの
ポーリングで行うことになる。

while (true) { try { int intCount = stream.Read(bytes, 0, bytes.Length); if (intCount != 0) {    .... }

このように書くのだが、このループCPUに相当負担をかけるのではと
心配になるのだが、実はプログラムは
int intCount = stream.Read(bytes, 0, bytes.Length);
で待機しているのである。
つまり無限ループで処理しているのは一回の受信でバッファに入りきれなかった
データーを処理する為で、データーの有り無はstream.Readにコールバクがかかって
実行がこの行から下に落ちることになる。
つまり受信イベントが発生すると同じ処理になる。




同じカテゴリー(PC)の記事画像
Window10アップグレード
PC購入
Windows Update という名の恐怖(2)
Windows Update という名の恐怖(1)
カルチャーショック
USBの不思議
同じカテゴリー(PC)の記事
 Window10アップグレード (2015-09-11 10:50)
 PC購入 (2015-02-23 11:00)
 忙しい (2013-10-01 20:46)
 Windows Update という名の恐怖(2) (2013-07-02 16:19)
 Windows Update という名の恐怖(1) (2013-07-01 11:50)
 カルチャーショック (2012-12-24 08:30)

2010年08月03日 Posted byigoten at 12:39 │Comments(0)PC

 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。