-1

Windows 2008 32ビットサーバーで以下のコードを実行すると、connect()が呼び出されたときにプログラムフローがsckTest_Error()に移動します。

しかし、Windows 2008 64ビットサーバーで同じコードを実行すると、RTEが発生し、プログラムフローでエラーが発生します。

Private Sub Form_Load()
On Error GoTo error1
     If (Not (Me.sckTest.State = sckConnected)) Then
        '
        'Log event for outbound client mode connectoin

        If Me.sckTest.State <> sckClosed Then
            Me.sckTest.Close
        End If
        '
        MsgBox "Going to connect"
        Me.sckTest.Connect "127.0.0.1", 0
        MsgBox "Connecting"
       If Me.sckTest.State = sckConnected Then
        MsgBox "Connected"
       End If
        '
    End If
    Exit Sub
error1:
    MsgBox "RTE " & Err.Number
End Sub


Private Sub sckTest_Error(ByVal Number As Integer, 
                          Description As String, 
                          ByVal Scode As Long, 
                          ByVal Source As String, 
                          ByVal HelpFile As String, 
                          ByVal HelpContext As Long, 
                          CancelDisplay As Boolean)
    MsgBox "Error in connecting" & Number
End Sub

しかし、両方のサーバーで10049としてエラーが発生します。私のコードまたはサーバーの動作に関する問題についてアドバイスをいただけますか。

ありがとう

4

1 に答える 1

1

ポート0は、ソケットがランダムに使用可能なエピメラルポートにバインドできるようにする特別なワイルドカードです。バインドが成功したら、ソケットにクエリを実行して、バインドされた実際のポートを見つけることができます。そのため、サーバーソケットが最初にポート0でリッスンすることはできないため、クライアントソケットをポート0に接続することはできません。

于 2013-02-11T18:30:10.867 に答える