タイトル | : Winsockでの接続拒否 |
記事No | : 11308 |
投稿日 | : 2008/02/01(Fri) 17:18 |
投稿者 | : コーヒーブレイク |
いつも大変お世話になっています。
WindowsXPでのVB6にて作成したアプリでのサーバークライアントの 通信においてサーバー側がIP確認でエラーと判定して接続拒否を した際にクライアント側で実行時エラーが発生してしまいます。 以下に抜粋になりますが、関係すると思われる部分のソースを簡略して のせます。 注)VBのヘルプを参考にサーバー側はWinsockコントロールをコントロール 配列にすることで複数接続を実現しています。
--- サーバー側 ---------------------------------------------------------- Private Sub Winsock_Sv_ConnectionRequest(Index As Integer, ByVal requestID As Long)
If 接続要求受付可否フラグ = NG Then Exit Sub ←[1] End If
'=== 接続元判定 === If StrComp(Winsock_Sv(Index).RemoteHostIP, 内部照合IPデータ) <> 0 Then Exit Sub ←[2] End If
'--- 接続要求受付 --- If Index = 0 Then Winsockコントロールのコントロール配列をLOADしAcceptする。 End If End Sub
--- クライアント側 ----------------------------------------------------- Private Sub Winsock_Ct_Connect() '=== ヘルスチェック初期送信 === Winsock_Ct.SendData "007|HEALTH" ←[3] End Sub
上記[3]で「実行時エラー'40006':指定したトランザクションまたは要求の プロトコルまたは接続状態に問題があります。」というエラーが発生します。 サーバー側のソースにて同じようにExitさせても[1]では問題が発生せず、 [2]でこのエラーが発生することからStrCompした際にオブジェクトを 参照することによって自動的にConnect状態になっているのではと推測しています。
この推測が正しいのか、また正しいのであれば回避方法など少しでもアドバイス いただけると助かります。 よろしくお願いいたします。
|