したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

VB2005のSocket通信の複数クライアントの非同期処理

1たけ:2011/02/04(金) 19:41:27
VB2005のSocket通信サーバーの複数クライアントの非同期処理
を参考にマルチスレッドの通信サーバを作成させて頂きました。
順調に動作はしているのでうが、同時接続は何台まで可能かと
質問を受けました。
色々とネット等々で調べたのですが、よくわかりません。
何か御存じでしょうか?
ちなみに通信サーバが稼働しているOSはWindows2003Serverに
なります。
1つの通信サーバで最大同時接続が何台まで可能なものでしょうか?

2igoten:2011/02/04(金) 20:06:41
サーバのポート番号の最大は65534ですが
Windowsの場合デフォルトで5000となっています。
レジストリ変更でで65534にまで拡張できるようです。

3ひろ4932:2011/02/09(水) 22:06:38
C#,VB2005のSocket通信サーバーの複数クライアントの非同期処理を参考にさせていただきました。
大変助かっており、有難うございます。
以前、OnWriteCompleteで文字列の書き込みが完了したときにメッセージを出力して
読み取りを続けるため、networkStream.BeginReadの呼び出しが話題になったことが
ありましたが、オリジナルのオライリー・ジャパンの「プログラミング C#」に
あったということで話が終わっていたのですが、今私の方でこちらのプログラムを
参考に作成したものが、時々、受信データがおかしくなることがあります。
データ長は529バイトなのですが、受信bufferの先頭に前のデータが残っている
ことがありました。パケットモニターでネット上のパケットを確認したのですが、
送信側は正常なデータを送信していました。
そこで、試しにOnWriteComplete後のBeginReadをはずしてみたのですが、
データ取得ミスは発生しなくなりました。(今のところ)
原因がわかないのであまり気持ちよくないのですが、
何か心当たりなどありましたらお教え願います。

4igoten:2011/02/09(水) 22:10:45
すみません金曜まで出張なのでお待ちください。

5igoten:2011/02/11(金) 10:19:27
bufferに前のデーターが残ってしまう件ですが、調べてみました。
結論から言いますと、私のサンプルプログラムのミスです。

NetworkStream.BeginRead メソッドの2番目の引数 int offsetは
bufferの何処からデーターを格納するかの値です。

つまりデーターが残ってしまうように見えるのはデーターの途中から
格納してしまっているからです。


OnReadCompleteで全てのデーターを読み込んで、bufferの読み込み位置を
0にクリアーする為に
networkStream.BeginRead(buffer, 0, buffer.Length,callbackRead, null);
を入れています。

所が私のプログラムは、OnWriteCompleteの後に
networkStream.BeginRead(buffer, 0, buffer.Length,callbackRead, null);
を入れてしまいました。
これは誤りです。
何故なら私のプログラムは送信はボタンで任意の時にデーターを送る
仕様になっています。
従って、データー受信中に送信のボタンを押すと、読み込みバッファが
クリアされて途中からデーターを格納しはじめてしまいます。

従って正しくはひろさんのおっしゃる通りOnWriteCompletメソッドの中の
networkStream.BeginRead(buffer, 0, buffer.Length,callbackRead, null);
は不要と言うか入れてはいけませんでした。

サンプルプログラムは時間を見て訂正しておきます。

6ひろ4932:2011/02/12(土) 15:13:19
ご回答有難うございます。

>OnReadCompleteで全てのデーターを読み込んで、bufferの読み込み位置を
>0にクリアーする為に
>networkStream.BeginRead(buffer, 0, buffer.Length,callbackRead, null);
>を入れています。

OnReadCompleteの最後にBeginReadをしている理由がわかりました。

>何故なら私のプログラムは送信はボタンで任意の時にデーターを送る
>仕様になっています。
>従って、データー受信中に送信のボタンを押すと、読み込みバッファが
>クリアされて途中からデーターを格納しはじめてしまいます。
受信中の送信動作が可能(受信と送信が非同期)な仕様ということですね。
私も仕様を理解していませんでした。
実は、受信と送信がぶつかったときは通信エラーになると思っていたものですから。
それと異常時の受信データの件ですが、
途中からデーターを格納しはじめるというとそうなんですが、
単純に受信バッファの先頭から途中データが入っているという
わけではないのですが、その辺は送受信のタイミングによって
どういう挙動をするかは不明なのでそうなるのかもしれません。

どうも有難うございました。
又、何かありましたら宜しくお願いします。

7バーバリー コート メンズ:2012/10/31(水) 02:58:16
はじめまして。突然のコメント。失礼しました。
バーバリー コート メンズ http://www.burberryfactory.com/バーバリー-コート-c-3.html

8コーチ 財布 メンズ:2013/03/29(金) 23:57:28
In actual fact searching for homes which specifically have these functions may severely limit the quantity of search results and may result in no search results at all when these features are searched together with a typical price range. コーチ 財布 メンズ http://www.coach-summer.com/


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板