- - PR -
Socket.Accept の待機時間
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-05-22 13:34
なるほど、.netでは外から閉じてもよくて、その場合SocketExceptionが発生するということですね。参考になりました。
今までの経験からすると、非同期ソケット使っちゃうところでした。 | ||||||||
|
投稿日時: 2004-05-22 16:41
う〜ん。 どうやら、自分でSocetの派生クラスを作って タイムアウト時間を設定できるようにするのがよいかも。 System.Timers.TimerとSystem.Threading.ManualResetEvent を使って実装するのがのがいいっぽい。 | ||||||||
|
投稿日時: 2004-05-22 21:38
Socket#Selectメソッドを使用した、多重化IOで実装するというのはいかがなものでしょうか?
多重化IOはクライアントサイドから接続、送信、受信要求が発生していないときは、処理をブロックします。 また、複数のクライアントソケットの処理を一つのスレッドで行うことが可能になります。 以下のサイトは、Javaに関するものですが、私はここの記述とdot net frameworkのリファレンスを参考に、C#で多重化IOの実装を行いました。 http://www-6.ibm.com/jp/developerworks/java/040402/j_j-perf03174.html Socket#Selectの解説と使用例 | ||||||||
|
投稿日時: 2004-05-23 11:41
ふむふむ。そいうものがあったんですか。
わざわざスレッドを作らずに、 たくさんのソケットを一元的に管理できるんですね。 便利そうです。 ためしてみます。ありがとうございました。 | ||||||||
|
投稿日時: 2004-05-23 14:43
多数の接続を扱う場合には有利ですが、ごく少ない接続を扱う場合にはブロック型+スレッドの方が性能面で有利な場合があります。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||||||
|
投稿日時: 2004-06-14 15:58
はじめまして。
本来なら別スレを立てるべき内容なのかもしれませんが、なにとぞご教示ください。 そもそも、ブロックモード・非ブロックモードというのは、何をブロックするので しょうか? タコな質問で申し訳ありません、よろしくお願いします。 | ||||||||
|
投稿日時: 2004-10-21 13:40
Socket* socket;
int wait_time; // micro sec. ・・・ if (socket->Poll(wait_time,SelectMode::SelectRead)){ socketにメッセージが来た } else{ 待ち時間内にはこなかった } |