WinSockのConnect関数について – プログラミング – Home

WinSockのConnect関数につ...
 
通知
すべてクリア

WinSockのConnect関数について


レコバ
 レコバ
(@レコバ)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

レコバと申します。
WinSockのConnect関数について疑問があります。
どなたかご教授願えませんでしょうか。

あるマシン(IP XXX.XXX.XXX.XX)に対し、
WinSockのConnect関数をもちいて接続処理を行う際、
LANケーブルが抜けていた場合、関数は応答を返すまで
20秒ほどかかってしまいます。
WinSockのConnect関数はソケットエラー10060
(接続を試みたが、時間切れで、接続を確立できなかった。)
を返しているようですが、これだけ時間がかかってしまうというのは
正常な動作と考えてよろしいのでしょうか。

以上、ご解答よろしくお願いいたします。


引用解決済
トピックタグ
ライオン
 ライオン
(@ライオン)
ゲスト
結合: 22年前
投稿: 16
 

タイムアウトで終わっているので正常動作だと思いますが。
本当にそうか調べるのであれば、
setsockopt
でタイムアウト値を設定して実行してみてはどうでしょうか?


返信引用
レコバ
 レコバ
(@レコバ)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

動作自体は正常に動いているようです。
ですが指定したIPによって関数の応答時間が変わる
ような感じなんです。
例えば、XXX.XXX.XXX.XXのソケットエラー応答が20sかかるのに対し、
..***.**のソケットエラー応答は1sかかりません。
何か検索処理などが走るのでしょうか?


返信引用
aetos
(@aetos)
Noble Member
結合: 6年前
投稿: 1480
 

ケーブルが抜けているのを検出する方法というのがありましたが、これでしょうかね?

> http://xcorp.saposen.com/AD2002/9
PowerPoint のスライドですが。

テキストにすると

> ret_code = ::GetIfTable( ( PMIB_IFTABLE )if_table, &tab_size, FALSE );
> if_row = &( if_table->table[ idx ] );
> printf( Cable Status : %d\n, if_row->dwOperStatus );

だそうです。


返信引用
aetos
(@aetos)
Noble Member
結合: 6年前
投稿: 1480
 

ごめんリンク切れてる。
こっちで。
> http://xcorp.saposen.com/AD2002/Win32_Network_Programming_Tips.ppt#9


返信引用
aetos
(@aetos)
Noble Member
結合: 6年前
投稿: 1480
 

一番肝心なことを書いてなかったヨ

if_row->dwOperStatus が
MIB_IF_OPER_STATUS_CONNECTED または
MIB_IF_OPER_STATUS_OPERATIONAL のどちらかのとき
ケーブルがつながっているんだそうな。

連カキごめん。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました