Erstellt einen Verbindungsanschluss zu einem vorhandenen Server.
TCPConnect ( IPAddr, port )
IPAddr | Internet Protokol "Punkt-Adresse" (IpV4) wie z.B. "192.162.1.1". |
port | Port, auf dem die Verbindung des erstellten Anschlusses erfolgt. |
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). |
Diese Funktion wird von einem Client genutzt, um mit dem Server zu kommunizieren.
TCPListen, TCPRecv, TCPSend, TCPStartup, TCPTimeout (Option)
#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
#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