タイトル : Winsockでの接続拒否 投稿日 : 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状態になっているのではと推測しています。 この推測が正しいのか、また正しいのであれば回避方法など少しでもアドバイス いただけると助かります。 よろしくお願いいたします。 |