tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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状態になっているのではと推測しています。

この推測が正しいのか、また正しいのであれば回避方法など少しでもアドバイス
いただけると助かります。
よろしくお願いいたします。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。