Funktionreferenz


TCPConnect

Beschreibung anzeigen in

Erstellt einen Verbindungsanschluss zu einem vorhandenen Server.

TCPConnect ( IPAddr, port )

Parameter

IPAddr Internet Protokol "Punkt-Adresse" (IpV4) wie z.B. "192.162.1.1".
port Port, auf dem die Verbindung des erstellten Anschlusses erfolgt.

Rückgabewert

Erfolg: Die ID des Haupt-Anschlusses.
Fehler: -1 oder 0 zurück und setzt das @error Flag auf ungleich null.
@error: -2 nicht verbunden
1 IP-Adresse falsch
2 Port falsch.
10060 Verbindungs-Timeout.
    Ein Verbindungsversuch ist fehlgeschlagen, weil der angeschlossene Teil nach einer gewissen Zeit nicht richtig reagiert hat,
    oder die etablierte Verbindung fehlgeschlagen ist, weil der verbundene Host nicht reagiert hat.
    Siehe Beispiel zum Verbindungs-Timeout.
Windows API WSAGetLastError Rückgabewerte (siehe MSDN).

Bemerkungen

Diese Funktion wird von einem Client genutzt, um mit dem Server zu kommunizieren.

Verwandte Funktionen

TCPListen, TCPRecv, TCPSend, TCPStartup, TCPTimeout (Option)

Beispiel

Beispiel 1

#include <MsgBoxConstants.au3>
#include <WinAPIError.au3>

; Ich bin der Client, starte mich nach dem Server! (Starte zuerst das TCPAccept Beispielscript).

Example()

Func Example()
    TCPStartup() ; Startet den TCP Service.

    ; Registriert OnAutoItExit um es aufzurufen, wenn das Script beendet wird.
    OnAutoItExitRegister("OnAutoItExit")

    ; Weist lokalen Variablen die loopback IP-Adresse (localhost) und den Port zu.
    Local $sIPAddress = "127.0.0.1" ; Diese IP-Adresse funktioniert nur am eigenen Computer.
    Local $iPort = 65432 ; Port welcher für die Verbindung verwendet wird.

    ; Weist einer lokalen Variable den Socket zu und verbindet sich zu einem lauschenden Socket mit der gegebenen IP-Adresse und Port.
    Local $iSocket = TCPConnect($sIPAddress, $iPort)

    ; Wenn ein Fehler aufgetaucht ist, so wird dieser angezeigt und False zurückgegeben.
    If @error Then
        ; Der Server ist vermutlich offline oder der Port wurde nicht am Server geöffnet.
        Local $iError = @error
        MsgBox(($MB_ICONERROR + $MB_SYSTEMMODAL), "", "Verbindung konnte nicht hergestellt werden, Error Code: " & $iError & @CRLF & _WinAPI_GetErrorMessage($iError))
        Return False
    Else
        MsgBox($MB_SYSTEMMODAL, "", "Verbindung wurde erfolgreich hergestellt.")
    EndIf

    ; Schließt den Socket.
    TCPCloseSocket($iSocket)
EndFunc   ;==>Example

Func OnAutoItExit()
    TCPShutdown() ; Schließt den TCP Service.
EndFunc   ;==>OnAutoItExit

TCPConnect with timeout

#include <MsgBoxConstants.au3>
#include <WinAPIError.au3>

; I am the client, start me after the server no more than 10sec ! (The server script is the TCPAccept example script).

Example()

Func Example()
    Local $sMsgBoxTitle = "AutoItVersion = " & @AutoItVersion

    TCPStartup() ; Start the TCP service.

    ; Register OnAutoItExit to be called when the script is closed.
    OnAutoItExitRegister("OnAutoItExit")

    ; Assign Local variables the loopback IP Address and the Port.
    Local $sIPAddress = "127.0.0.1" ; This IP Address only works for testing on your own computer.
    Local $iPort = 65432 ; Port used for the connection.

    Opt("TCPTimeout", 1000)
    Local $nMaxTimeout = 10 ; script will abort if no server available after 10 secondes

    Local $iSocket, $hTimer = TimerInit()

    While 1
        ; Assign a Local variable the socket and connect to a Listening socket with the IP Address and Port specified.
        $iSocket = TCPConnect($sIPAddress, $iPort)

        ; If an error occurred display the error code and return False.
        If @error = 10060 Then
            ; Timeout occurs try again
            $nMaxTimeout -= 1
            If $nMaxTimeout <= 0 Then
                MsgBox(($MB_ICONERROR + $MB_SYSTEMMODAL), $sMsgBoxTitle, "Could not connect, after " & Int(TimerDiff($hTimer) / 1000) & " sec")
                Return False
            EndIf
            ContinueLoop
        ElseIf @error Then
            ; The server is probably offline/port is not opened on the server.
            MsgBox(($MB_ICONERROR + $MB_SYSTEMMODAL), $sMsgBoxTitle, "Could not connect, Error code: " & @error & @CRLF & _WinAPI_GetErrorMessage(@error))
            Return False
        Else
            MsgBox($MB_SYSTEMMODAL, $sMsgBoxTitle, "Connection successful after " & Int(TimerDiff($hTimer) / 1000) & " sec")
            ExitLoop
        EndIf

    WEnd

    ; Close the socket.
    TCPCloseSocket($iSocket)
EndFunc   ;==>Example

Func OnAutoItExit()
    TCPShutdown() ; Close the TCP service.
EndFunc   ;==>OnAutoItExit