- PR -

Socket.Accept の待機時間

投稿者投稿内容
チャロ
会議室デビュー日: 2004/05/20
投稿数: 9
投稿日時: 2004-05-21 19:07
こんばんは、チャロです。
くだらない質問ですみません。
Socket.Accpetメソッドは接続要求があるまでブロックしますが、
一定時間接続要求がなかったときに、メソッドを中断させるにはどうしたら
良いのでしょうか。
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2004-05-21 22:50
タイマーっしょ。
チャロ
会議室デビュー日: 2004/05/20
投稿数: 9
投稿日時: 2004-05-22 00:01
返答ありがとうございます。

タイマーってことは、Acceptを含んだスレッド自体を
Abortするってことですか?
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2004-05-22 00:15
引用:

Socket.Accpetメソッドは接続要求があるまでブロックしますが、
一定時間接続要求がなかったときに、メソッドを中断させるにはどうしたら
良いのでしょうか。



スレッドに Accept() させておいて、タイマーで監視して、タイムアウトしたらスレッドの外からソケットをクローズするとか。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
チャロ
会議室デビュー日: 2004/05/20
投稿数: 9
投稿日時: 2004-05-22 00:58
>スレッドに Accept() させておいて、タイマーで監視して、タイムアウトしたらスレッドの外からソケットをクローズする

そのようにした方が設計もスマートになりました。
ありがとうございます。
ぴんぴん
大ベテラン
会議室デビュー日: 2004/05/07
投稿数: 141
投稿日時: 2004-05-22 01:02
ソケットを外から閉じるても問題ないのでしょうか。閉じた場合、ブロックしていたスレッド
では、SocketExceptionでも発生するのでしょうか。

MFC時代のソケットは、外から閉じるとGP起きましたので・・・

非同期ソケットを使うというのは、面倒くさいでしょうか。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-05-22 06:38
諸農です。

引用:

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



ブロックさせずにBeginAccept()させてみるって言うのはダメでしょうか?
_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2004-05-22 12:21
引用:

ソケットを外から閉じるても問題ないのでしょうか。



生ソケットでは問題ありません。

VC++ では生ソケットか自作のクラスを使っています。
CAsyncSocket は KB にも載っているバグがあるので使用を避けています。

SocketException は妥当な例外なので、どっちみち捕捉しないと駄目ですよね?

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/

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