- PR -

Socket.Accept の待機時間

投稿者投稿内容
ぴんぴん
大ベテラン
会議室デビュー日: 2004/05/07
投稿数: 141
投稿日時: 2004-05-22 13:34
なるほど、.netでは外から閉じてもよくて、その場合SocketExceptionが発生するということですね。参考になりました。

今までの経験からすると、非同期ソケット使っちゃうところでした。
チャロ
会議室デビュー日: 2004/05/20
投稿数: 9
投稿日時: 2004-05-22 16:41
引用:

引用:

Socket.Accpetメソッドは接続要求があるまでブロックしますが、



ブロックさせずにBeginAccept()させてみるって言うのはダメでしょうか?




う〜ん。
どうやら、自分でSocetの派生クラスを作って
タイムアウト時間を設定できるようにするのがよいかも。
System.Timers.TimerとSystem.Threading.ManualResetEvent
を使って実装するのがのがいいっぽい。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 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/20
投稿数: 9
投稿日時: 2004-05-23 11:41
ふむふむ。そいうものがあったんですか。

わざわざスレッドを作らずに、
たくさんのソケットを一元的に管理できるんですね。
便利そうです。
ためしてみます。ありがとうございました。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2004-05-23 14:43
引用:

わざわざスレッドを作らずに、
たくさんのソケットを一元的に管理できるんですね。



多数の接続を扱う場合には有利ですが、ごく少ない接続を扱う場合にはブロック型+スレッドの方が性能面で有利な場合があります。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
隣の古柴
ベテラン
会議室デビュー日: 2004/06/04
投稿数: 94
投稿日時: 2004-06-14 15:58
はじめまして。

本来なら別スレを立てるべき内容なのかもしれませんが、なにとぞご教示ください。

そもそも、ブロックモード・非ブロックモードというのは、何をブロックするので
しょうか?

タコな質問で申し訳ありません、よろしくお願いします。
茅井太郎
会議室デビュー日: 2004/07/13
投稿数: 8
投稿日時: 2004-10-21 13:40
Socket* socket;
int wait_time; // micro sec.
・・・
if (socket->Poll(wait_time,SelectMode::SelectRead)){
 socketにメッセージが来た
}
else{
待ち時間内にはこなかった
}

スキルアップ/キャリアアップ(JOB@IT)