Nur als kleiner Hinweis, weil ich es vergessen hab,
Server und Client funktionieren nur mit der TCP.au3.
Das ist die eigentliche UDF. Der name ist bischen schlecht gewählt...
Nur als kleiner Hinweis, weil ich es vergessen hab,
Server und Client funktionieren nur mit der TCP.au3.
Das ist die eigentliche UDF. Der name ist bischen schlecht gewählt...
Hier ist meine TCP Client/Server UDF. Gibt zwar schon einige aber vielleicht gefällt es dem einen oder dem anderen.
Als Beispiel habe ich ein ganz einfachen Chat geschrieben - nix besonderes.
Die UDF übernimmt auch das Socket handling. D.h. man muss sich nicht um die Sockets kümmern. Diese werden automatisch von der UDF
gehändelt.
#include-once
#include <Array.au3>
;--Global Constants ------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Global Const $TcpNoSocket = -1
Global Const $TcpDefConnections = -1
;Return Error Constants
Global Const $Tcp_WrongIpAdr = 1 ; Wrong Ip Address
Global Const $Tcp_WrongPort = 2 ; Wrong Prot
Global Const $Tcp_WrongState = 3 ; Wrong State (Modul intern)
Global Const $Tcp_MaxConReached = 4 ; Max. number of connection reached (Modul intern)
Global Const $Tcp_ConDisabled = 5 ; Tcp connection Disabled
Global Const $Tcp_Connected = 6 ; Tcp already connected
Global Const $Tcp_ServerDisabled = 7 ; Tcp Server disabled
Global Const $Tcp_NoData = 8 ; Tcp No Data Received
;Failure Flags form Network Card (See http://msdn.microsoft.com/en-us/library/ms740668.aspx)
Global Const $Tcp_AdrAllReadyUse = 10048 ; Adress already in use
Global Const $Tcp_NetWorkDown = 10050 ; Network is down
Global Const $Tcp_NetWorkUnReachable = 10051 ; Host currently not reachable
Global Const $Tcp_ConnectionRefused = 10061 ; Connection refused by target computer
;Enum for Tcp States
Global Enum $Tcp_NoAction = 0, _
$Tcp_StartUpOk = 1, _
$Tcp_ServerActive = 2, _
$Tcp_ClientActive = 3, _
$Tcp_Error = 4
;Enum for Tcp Connection Status
Global Enum $Tcp_NoConnection = -1, _
$Tcp_IsListen = 1, _
$Tcp_IsConnected = 2
;Enum to define Paramter for the TcpServerSocketList
Global Enum $Tcp_Socket = 0, _
$Tcp_SocketIp, _
$NumOfSockLstData
;Enum for the definition of the Tcp_Timer
Global Enum $Tcp_TimerStatus = 0, _
$Tcp_TimerStart, _
$Tcp_TimerThreshold, _
$Tcp_TimerCounter, _
$Tcp_NumOfTimerParam
Global Enum $Tcp_TransmitParam = 0, _
$Tcp_ReceiveParam, _
$Tcp_NumOfUsrDatParam
;--Global Parameter (Internal Use)------------------------------------------------
[/autoit] [autoit][/autoit] [autoit];Prameter which includes the current state of the Tcp Connection
Global $TcpState = $Tcp_NoAction
;Pramter which shows the current connection status
Global $TcpConnectStatus
;Value which shows the MainSocket of the Tcp Connection
;When used as client - MainSocket used as connection to Server
; as server - MainSocket used as indicator that Server is active
Global $TcpMainSocket
;Server socket list, includes all active connections between server and clients
Global $TcpServerSocketList[1][$NumOfSockLstData]
;Parameter to define the maximum allowed connections
Global $TcpMaxConnections
;Parameter array where cyclic transmit/receive data can be set.
Global $TcpUserDataParams[1][$Tcp_NumOfUsrDatParam]
;Sign/String which will be cyclic send to check wheter the Client/Server are connected
Global $TcpConnectCheckSign
Global $TcpConnectCheckTimer
;--Start Script ----------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit];==Skript=Starts=Here========
;init()
;============================
;main()
;============================
;shdown()
;==Skript=Ends=Here==========
;-- Main Function Definitions --------------------------------------------------
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_Init
; Description ...: Init function of the Tcp.au3
; Syntax ........: Tcp_Init([$timeOut = False[, $tTime = 100]])
; Parameters ....: $timeOut - [optional] Boolean value Enable/Disable Connection timeout. Default is False.
; $tTime - [optional] Integer value to define the timeout time. Default is 100.
; Return values .: None
; Author ........: SeidC
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_Init($timeOut = False, $tTime = 100)
Local $tcpStUp = $Tcp_NoAction
Local $ret
Local $error
$tcpStUp = $Tcp_Error
If $timeOut = True And $tTime <> 0 Then Opt("TCPTimeout", $tTime)
$ret = TCPStartup()
$error = @error
If $ret = 1 Then $tcpStUp = $Tcp_StartUpOk
Tcp_InitSocketList()
Tcp_InitUserDataParams()
Tcp_SetMaxConnections($TcpDefConnections)
Tcp_SetMainSocket($TcpNoSocket)
Tcp_SetConnectStatus($Tcp_NoConnection)
Tcp_SetState($tcpStUp)
Tcp_SetTcpCheckConnectSign(0xAAAA)
$TcpConnectCheckTimer = Tcp_InitTimer(1000)
Tcp_StartTimer($TcpConnectCheckTimer)
If $ret = 0 Then Return SetError($error,0,-1)
[/autoit] [autoit][/autoit] [autoit]Return SetError(0,0,1)
EndFunc ;==>TCP_Init
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_Main
; Description ...: Main function of the Tcp.au3. This function should be normally used in polling mode (while(1)-loop)
; Syntax ........: Tcp_Main()
; Parameters ....:
; Return values .: 1x2-D Array, which indiactes the connected and disconected sockets, [0][0] = Connected Socket
; [0][1] = Disconnected Socket
; Param [0][0] = -1 - Nothing to do value can be ignored
; Param [0][1] = -1 - Nothing to do value can be ignored
;
; Param [0][0] > 0 - Courrent connected socket
; Param [0][1] > 0 - Courrent disconnected socket
; Author ........: Seidc
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_Main()
Local $avRet[1][2] = [[-1,-1]]
If Tcp_GetState() = $Tcp_ServerActive Then
$avRet[0][0] = Tcp_AcceptIncommingConnection()
$avRet[0][1] = Tcp_CheckSocketListConnections($Tcp_ServerActive)
ElseIf Tcp_GetState() = $Tcp_ClientActive Then
Tcp_CheckSocketListConnections($Tcp_ClientActive)
Else
EndIf
Return SetError(0,0,$avRet)
EndFunc ;==>TCP_Main
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_Shutdown
; Description ...: Shutdown function of the Tcp.au3. If Tcp.au3 is used as Server, the shutdown disconnect all available connection
; and disables the Tcp modul.
; If it used as Client, the shutdown disconnects from server and then the Tcp modul.
; Syntax ........: Tcp_Shutdown()
; Parameters ....: None
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_Shutdown()
If Tcp_IsConnected() Then Tcp_DisconnectFromServer()
If Tcp_IsListen() Then Tcp_CloseServer()
TCPShutdown()
EndFunc ;==>Tcp_Shutdown
;-- Other Function Definitions -------------------------------------------------
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_StartServer
; Description ...: Function to start a Tcp Server
; Syntax ........: Tcp_StartServer($port[, $ipAsString = @IPAddress1[, $maxConnections = -1]])
; Parameters ....: $port - Port of the Server
; $ipAsString - [optional] Ip of the Server which should be listen. Default is @IPAddress1.
; $maxConnections - [optional] Number of max allowed connections. Default is -1 which means each connection allowed
; Return values .: 1 - Server start was successful
; -1 - Server start failed.
; See @error for more details.
; Possible @error values are shown at Return Error Constants
; Author ........: SeidC
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_StartServer($port, $ipAsString = @IPAddress1, $maxConnections = -1)
Local $ret = -1
Local $error
Local $mainSocket
Local $cIp = TCPNameToIP($ipAsString)
If Tcp_GetConnectStatus() = $Tcp_IsConnected Then Return SetError($Tcp_Connected, 0, -1)
If Tcp_GetConnectStatus() = $Tcp_IsListen Then Return SetError($Tcp_WrongState, 0, -1)
If $maxConnections = -1 Then
$mainSocket = TCPListen($cIp, $port)
$error = @error
Tcp_SetMainSocket($mainSocket)
$ret = 1
Else
$mainSocket = TCPListen($cIp, $port, $maxConnections)
$error = @error
Tcp_SetMainSocket($mainSocket)
Tcp_SetMaxConnections($maxConnections)
$ret = 1
EndIf
If $mainSocket > 0 Then
Tcp_SetConnectStatus($Tcp_IsListen)
Tcp_SetState($Tcp_ServerActive)
EndIf
If $error > 0 Then $ret = -1
[/autoit] [autoit][/autoit] [autoit]Return SetError($error, 0, $ret)
EndFunc ;==>Tcp_StartServer
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_CloseServer
; Description ...: Function to close (ShutDown) a Tcp Server
; Syntax ........: Tcp_CloseServer()
; Parameters ....: None
; Return values .: 1 - Tcp Server was successfully closed
; -1 - Close of a Tcp Server failed
; See @error for more details.
; Possible @error values are shown at Return Error Constants.
; Author ........: SeidC
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_CloseServer()
Local $ret = -1
Local $error
If Tcp_GetConnectStatus() <> $Tcp_IsListen Then Return SetError($Tcp_ServerDisabled, 0 - 1)
[/autoit] [autoit][/autoit] [autoit]Tcp_DisonnectAllSockets()
$ret = Tcp_StopServer()
$error = @error
If $ret = True Then
$ret = 1
Else
$ret = -1
EndIf
Return SetError($error, 0, $ret)
EndFunc ;==>Tcp_CloseServer
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_ConnectToServer
; Description ...:
; Syntax ........: Tcp_ConnectToServer($ipAsString, $port)
; Parameters ....: $ipAsString - Ip v4 Adress to connect to server.
; $port - Port of the Server.
; Return values .: 1 - Modul connected successfully to Server
; -1 - A connection error happen.
; See @error for more details.
; Possible @error values are shown at Return Error Constants
; Author ........: SeidC
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_ConnectToServer($ipAsString, $port)
Local $ret
Local $error
Local $mainSocket
Local $cIp = TCPNameToIP($ipAsString)
If Tcp_GetConnectStatus() = $Tcp_IsListen Then Return SetError($Tcp_WrongState, 0, -1)
If Tcp_GetConnectStatus() = $Tcp_IsConnected Then Return SetError($Tcp_Connected, 0, -1)
$mainSocket = TCPConnect($cIp, $port)
If @error Then Return SetError(@error, 0, -1)
Tcp_SetMainSocket($mainSocket)
Tcp_SetConnectStatus($Tcp_IsConnected)
Tcp_SetState($Tcp_ClientActive)
Return SetError(0, 0, 1)
EndFunc ;==>Tcp_ConnectToServer
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_DisconnectFromServer
; Description ...: Function to disconnect from Server
; Syntax ........: Tcp_DisconnectFromServer()
; Parameters ....: 1 - Disconnection was succesfull
; -1 - Disconnection failed.
; See @error for more details.
; Possible @error values are shown at Return Error Constants
; Return values .: None
; Author ........: SeidC
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_DisconnectFromServer()
Local $ret
Local $error
If Tcp_GetConnectStatus() <> $Tcp_IsConnected Then Return SetError($Tcp_ConDisabled, 0, -1)
$ret = TCPCloseSocket(Tcp_GetMainSocket())
$error = @error
If $ret = True Then
Tcp_SetMainSocket($TcpNoSocket)
Tcp_SetConnectStatus($Tcp_NoConnection)
Tcp_SetState($Tcp_StartUpOk)
$ret = 1
Else
$ret = -1
EndIf
Return SetError($error, 0, $ret)
EndFunc ;==>Tcp_DisconnectFromServer
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_GetState
; Description ...: Getter function to get the current TCP state
; Syntax ........: Tcp_GetState()
; Parameters ....:
; Return values .: None
; Author ........: SeidC
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_GetState()
Return $TcpState
EndFunc ;==>Tcp_GetState
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_GetConnectStatus
; Description ...:
; Syntax ........: Tcp_GetConnectStatus()
; Parameters ....:
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_GetConnectStatus()
Return $TcpConnectStatus
EndFunc ;==>Tcp_GetConnectStatus
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_GetMainSocket
; Description ...:
; Syntax ........: Tcp_GetMainSocket()
; Parameters ....:
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_GetMainSocket()
Return $TcpMainSocket
EndFunc ;==>Tcp_GetMainSocket
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_SetMaxConnections
; Description ...: Set the max. allowed number of connections
; Syntax ........: Tcp_SetMaxConnections($num)
; Parameters ....: $num - Max number of connection which will be allowed
; Return values .: None
; Author ........: SeidC
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_SetMaxConnections($num)
$TcpMaxConnections = $num
EndFunc ;==>Tcp_SetMaxConnections
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_GetMaxConnections
; Description ...: Retruns the max. allowed number of connections
; Syntax ........: Tcp_GetMaxConnections()
; Parameters ....: None
; Return values .: -1 = $TcpDefConnections - No max number of connection defined. Each avalialble connection will be allowed.
; >0 - The max. allowed number of connections
; Author ........: SeidC
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_GetMaxConnections()
Return $TcpMaxConnections
EndFunc ;==>Tcp_GetMaxConnections
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_GetSocketListData
; Description ...:
; Syntax ........: Tcp_GetSocketListData($socket)
; Parameters ....: $socket - A string value.
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_GetSocketListData($socket)
Local $avRet[$NumOfSockLstData]
For $i = 0 To UBound($TcpServerSocketList) - 1
If($TcpServerSocketList[$i][$Tcp_Socket] = $socket) Then
For $j = 0 To $NumOfSockLstData - 1
$avRet[$j] = $TcpServerSocketList[$i][$j]
Next
EndIf
Next
Return $avRet
EndFunc ;==>Tcp_GetSocketListData
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_InitTimer
; Description ...:
; Syntax ........: Tcp_InitTimer($threshold)
; Parameters ....: $threshold - A dll struct value.
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_InitTimer($threshold)
Local $timer[$Tcp_NumOfTimerParam]
$timer[$Tcp_TimerStart] = False
$timer[$Tcp_TimerThreshold] = $threshold
$timer[$Tcp_TimerStatus] = 0
$timer[$Tcp_TimerCounter] = 0
Return $timer
EndFunc ;==>Tcp_InitTimer
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_StartTimer
; Description ...:
; Syntax ........: Tcp_StartTimer(Byref $timer)
; Parameters ....: $timer - [in/out] A dll struct value.
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_StartTimer(ByRef $timer)
$timer[$Tcp_TimerStart] = True
$timer[$Tcp_TimerCounter] = TimerInit()
$timer[$Tcp_TimerStatus] = 0
EndFunc ;==>Tcp_StartTimer
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_GetTimerStatus
; Description ...:
; Syntax ........: Tcp_GetTimerStatus(Byref $timer)
; Parameters ....: $timer - [in/out] A dll struct value.
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_GetTimerStatus(ByRef $timer)
If $timer[$Tcp_TimerStart] = False Then Return SetError(1, 0, 1)
[/autoit] [autoit][/autoit] [autoit]Local $thrs = $timer[$Tcp_TimerThreshold]
If TimerDiff($timer[$Tcp_TimerCounter]) > $thrs Then
$timer[$Tcp_TimerStatus] = 1
Return SetError(0, 0, 1)
Else
$timer[$Tcp_TimerStatus] = 0
Return SetError(0, 0, 0)
EndIf
EndFunc ;==>Tcp_GetTimerStatus
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_ReloadTimer
; Description ...:
; Syntax ........: Tcp_ReloadTimer(Byref $timer)
; Parameters ....: $timer - [in/out] A dll struct value.
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_ReloadTimer(ByRef $timer)
$timer[$Tcp_TimerCounter] = TimerInit()
$timer[$Tcp_TimerStatus] = 0
EndFunc
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_StopTimer
; Description ...:
; Syntax ........: Tcp_StopTimer(Byref $timer)
; Parameters ....: $timer - [in/out] A dll struct value.
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_StopTimer(ByRef $timer)
$timer[$Tcp_TimerStart] = False
EndFunc
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_GetSocketListIndex
; Description ...:
; Syntax ........: Tcp_GetSocketListIndex($socket)
; Parameters ....: $socket - A string value.
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_GetSocketListIndex($socket)
For $i = 1 To UBound($TcpServerSocketList,1) - 1
If $TcpServerSocketList[$i][$Tcp_Socket] = $socket Then Return SetError(0, 0, $i)
Next
Return SetError(0, 0, -1)
EndFunc ;==>Tcp_GetSocketListIndex
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_SocketToIP
; Description ...:
; Syntax ........: Tcp_SocketToIP($socket)
; Parameters ....: $socket - A string value.
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_SocketToIP($socket)
Local $sockaddr, $aRet
$sockaddr = DllStructCreate("short;ushort;uint;char[8]")
[/autoit] [autoit][/autoit] [autoit]$aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $socket, _
"ptr", DllStructGetPtr($sockaddr), "int*", DllStructGetSize($sockaddr))
If Not @error And $aRet[0] = 0 Then
$aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($sockaddr, 3))
If Not @error Then $aRet = $aRet[0]
Else
$aRet = 0
EndIf
$sockaddr = 0
[/autoit] [autoit][/autoit] [autoit]Return $aRet
EndFunc ;==>Tcp_SocketToIP
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_IsConnected
; Description ...:
; Syntax ........: Tcp_IsConnected()
; Parameters ....:
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_IsConnected()
If Tcp_GetMainSocket() <> -1 And Tcp_GetState() = $Tcp_ClientActive Then Return SetError(0, 0, 1)
Return SetError(0, 0, -1)
EndFunc ;==>Tcp_IsConnected
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_IsListen
; Description ...:
; Syntax ........: Tcp_IsListen()
; Parameters ....:
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_IsListen()
If Tcp_GetMainSocket() <> -1 And Tcp_GetState() = $Tcp_ServerActive Then Return SetError(0, 0, 1)
Return SetError(0, 0, -1)
EndFunc ;==>Tcp_IsListen
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_SwitchErrorFlagToString
; Description ...:
; Syntax ........: Tcp_SwitchErrorFlagToString($errorFlag)
; Parameters ....: $errorFlag - An unknown value.
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_SwitchErrorFlagToString($errorFlag)
Local $retStr
Switch($errorFlag)
Case $Tcp_WrongIpAdr
$retStr = $errorFlag & ": Ip Invalid"
Case $Tcp_WrongPort
$retStr = $errorFlag & ": Port Invalid"
Case $Tcp_WrongState
$retStr = $errorFlag & ": Tcp Connection in wrong State"
Case $Tcp_MaxConReached
$retStr = $errorFlag & ": Max. number of connections reached"
Case $Tcp_ConDisabled
$retStr = $errorFlag & ": Disconnected"
Case $Tcp_Connected
$retStr = $errorFlag & ": Connected"
Case $Tcp_ServerDisabled
$retStr = $errorFlag & ": Server disabled"
Case $Tcp_AdrAllReadyUse
$retStr = $errorFlag & ": Address/Port allready in use"
Case $Tcp_NetWorkDown
$retStr = $errorFlag & ": Network is down"
Case $Tcp_NetWorkUnReachable
$retStr = $errorFlag & ": Host is unreachable"
Case $Tcp_ConnectionRefused
$retStr = $errorFlag & ": Connection refused by target computer"
Case Else
$retStr = "Unkown Error: " & $errorFlag
EndSwitch
Return $retStr
EndFunc ;==>Tcp_SwitchErrorFlagToString
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_SetTcpCheckConnectSign
; Description ...:
; Syntax ........: Tcp_SetTcpCheckConnectSign($signOrString)
; Parameters ....: $signOrString - A string value.
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_SetTcpCheckConnectSign($signOrString)
$TcpConnectCheckSign = $signOrString
EndFunc ;==>Tcp_SetTcpCheckConnectSign
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_GetTcpCheckConnectSign
; Description ...:
; Syntax ........: Tcp_GetTcpCheckConnectSign()
; Parameters ....:
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_GetTcpCheckConnectSign()
Return $TcpConnectCheckSign
EndFunc ;==>Tcp_GetTcpCheckConnectSign
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_Receive
; Description ...:
; Syntax ........: Tcp_Receive($socket[, $maxLen = 2048[, $recType = 0]])
; Parameters ....: $socket - A string value.
; $maxLen - [optional] An unknown value. Default is 2048.
; $recType - [optional] An unknown value. Default is 0.
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_Receive($socket,$maxLen = 2048,$recType = 0)
Local $ret = TCPRecv($socket,$maxLen,$recType)
Local $error = @error
If $ret = "" And @error > 0 Then Return SetError ($error, 0 , -1)
If $ret = Tcp_GetTcpCheckConnectSign() Then Return SetError($Tcp_NoData,0,-1)
Return SetError(0,0,$ret)
EndFunc ;==>Tcp_Receive
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_Send
; Description ...:
; Syntax ........: Tcp_Send($socket, $data)
; Parameters ....: $socket - A string value.
; $data - An unknown value.
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_Send($socket, $data)
Tcp_StopTimer($TcpConnectCheckTimer)
Local $ret = TCPSend($socket,$data)
Local $error = @error
Tcp_StartTimer($TcpConnectCheckTimer)
Return SetError($error,0,$ret)
EndFunc ;==>Tcp_Send
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_GetNumberOfConnectedSockets
; Description ...:
; Syntax ........: Tcp_GetNumberOfConnectedSockets()
; Parameters ....:
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_GetNumberOfConnectedSockets()
Return UBound($TcpServerSocketList,1) - 1
EndFunc
; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_GetSocketByIndex
; Description ...:
; Syntax ........: Tcp_GetSocketByIndex($index)
; Parameters ....: $index - An integer value.
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_GetSocketByIndex($index)
If $index < 0 Or $index >= UBound($TcpServerSocketList) Then Return SetError(1,0,-1)
If UBound($TcpServerSocketList) = 1 Then Return SetError(2,0,-1)
Return SetError(0,0,$TcpServerSocketList[$index][$Tcp_Socket])
EndFunc
;--- #INTERNAL_USE_ONLY# --------------------------------------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]; #INTERNAL_USE_ONLY# ===========================================================================================================
; Name ..........: Tcp_SetState
; Description ...: Setter function, to set the current state of the TCP connection
; Syntax ........: Tcp_SetState($state)
; Parameters ....: $state - Current state of the TCP connection.
; Return values .: None
; Author ........: SeidC
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_SetState($state)
$TcpState = $state
EndFunc ;==>Tcp_SetState
; #INTERNAL_USE_ONLY# ====================================================================================================================
; Name ..........: Tcp_SetConnectStatus
; Description ...:
; Syntax ........: Tcp_SetConnectStatus($status)
; Parameters ....: $status - A string value.
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_SetConnectStatus($status)
$TcpConnectStatus = $status
EndFunc ;==>Tcp_SetConnectStatus
; #INTERNAL_USE_ONLY# ====================================================================================================================
; Name ..........: Tcp_SetMainSocket
; Description ...:
; Syntax ........: Tcp_SetMainSocket($socket)
; Parameters ....: $socket - A string value.
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_SetMainSocket($socket)
$TcpMainSocket = $socket
EndFunc ;==>Tcp_SetMainSocket
; #INTERNAL_USE_ONLY# ====================================================================================================================
; Name ..........: Tcp_SetSocketToList
; Description ...: Adds a socket to the SocketList
; Syntax ........: Tcp_SetServerSocketToList($socket)
; Parameters ....: $socket - Current Socket of an available connection.
; Return values .: -1 - An error occurrs
; 1 - Socket successfully add to list
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_SetSocketToList($socket)
Local $ret = -1
If Tcp_GetMaxConnections() = $TcpDefConnections Then
Tcp_ArrayAdd2D($TcpServerSocketList, $Tcp_Socket, $socket)
Local $iUbound = UBound($TcpServerSocketList, 1) - 1
Local $iIpAdr = Tcp_SocketToIP($socket)
Tcp_ArrayAdd2D($TcpServerSocketList, $Tcp_SocketIp, $iIpAdr, 1, $iUbound)
$ret = 1
Else
If(UBound($TcpServerSocketList) - 1) < Tcp_GetMaxConnections() Then
Tcp_ArrayAdd2D($TcpServerSocketList, $Tcp_Socket, $socket)
Local $iUbound = UBound($TcpServerSocketList, 1) - 1
Local $iIpAdr = Tcp_SocketToIP($socket)
Tcp_ArrayAdd2D($TcpServerSocketList, $Tcp_SocketIp, $iIpAdr, 1, $iUbound)
$ret = 1
EndIf
EndIf
Return $ret
EndFunc ;==>Tcp_SetSocketToList
; #INTERNAL_USE_ONLY# ====================================================================================================================
; Name ..........: Tcp_AcceptIncommingConnection
; Description ...: Checks whether a new incomming connection is available and adds this to list
; Syntax ........: Tcp_AcceptIncommingConnection()
; Parameters ....: None
; Return values .: >0 - current add socket
; -1 - No Connection/ Error see @error for more information
; Author ........: SeidC
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_AcceptIncommingConnection()
Local $ret
Local $error
Local $socket
If Tcp_GetMainSocket() <> $TcpNoSocket Then
$socket = TCPAccept(Tcp_GetMainSocket())
$error = @error
If $socket <> -1 And $error = 0 Then
$ret = Tcp_CheckAndAddConnetion($socket)
If $ret <> -1 Then $ret = $socket
$error = @error
Else
$ret = - 1
EndIf
Else
$ret = -1
$error = $Tcp_ConDisabled
EndIf
Return SetError($error,0,$ret)
EndFunc ;==>Tcp_AcceptIncommingConnection
; #INTERNAL_USE_ONLY# ====================================================================================================================
; Name ..........: Tcp_CheckAndAddConnetion
; Description ...:
; Syntax ........: Tcp_CheckAndAddConnetion($socket)
; Parameters ....: $socket - A string value.
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_CheckAndAddConnetion($socket)
Local $ret = Tcp_SetSocketToList($socket)
If $ret = -1 Then
Return SetError($Tcp_MaxConReached,0,$ret)
EndIf
Return SetError(0,0,$ret)
EndFunc ;==>Tcp_CheckAndAddConnetion
; #INTERNAL_USE_ONLY# ====================================================================================================================
; Name ..........: Tcp_InitSocketList
; Description ...:
; Syntax ........: Tcp_InitSocketList()
; Parameters ....:
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_InitSocketList()
$TcpServerSocketList[0][0] = "Socket"
$TcpServerSocketList[0][1] = "IpAdress"
EndFunc ;==>Tcp_InitSocketList
; #INTERNAL_USE_ONLY# ====================================================================================================================
; Name ..........: Tcp_ArrayAdd2D
; Description ...:
; Syntax ........: Tcp_ArrayAdd2D(Byref $refArray, $2dPos, $data[, $bNotExtend = -1[, $1dPos = -1]])
; Parameters ....: $refArray - [in/out] An unknown value.
; $2dPos - An unknown value.
; $data - An unknown value.
; $bNotExtend - [optional] A binary value. Default is -1.
; $1dPos - [optional] An unknown value. Default is -1.
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_ArrayAdd2D(ByRef $refArray, $2dPos, $data, $bNotExtend = -1, $1dPos = -1)
If IsArray($refArray) = 0 Then Return SetError(1, 0, -1)
If UBound($refArray, 1) = 0 Then Return SetError(2, 0, -1)
If $2dPos > UBound($refArray, 1) - 1 Then Return SetError(3, 0, -1)
If $bNotExtend = 1 And $1dPos = -1 Then Return SetError(4, 0, -1)
Local $1dUbound = UBound($refArray, 1)
Local $2dUbound = UBound($refArray, 2)
If $bNotExtend = -1 Then
ReDim $refArray[$1dUbound + 1][$2dUbound]
$refArray[$1dUbound][$2dPos] = $data
Return SetError(0, 0, 1)
Else
If $1dPos > UBound($refArray, 1) - 1 Then Return SetError(5, 0, -1)
$refArray[$1dPos][$2dPos] = $data
EndIf
Return SetError(0, 0, 1)
EndFunc ;==>Tcp_ArrayAdd2D
; #INTERNAL_USE_ONLY# ====================================================================================================================
; Name ..........: Tcp_CheckSocketListConnections
; Description ...:
; Syntax ........: Tcp_CheckSocketListConnections($state)
; Parameters ....: $state - A string value.
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_CheckSocketListConnections($state)
Local $dellSock = -1
If Tcp_GetTimerStatus($TcpConnectCheckTimer) = 1 Then
If $state = $Tcp_ServerActive Then
For $i = 1 To UBound($TcpServerSocketList, 1) - 1
Local $tcpRet = TCPSend($TcpServerSocketList[$i][$Tcp_Socket], Tcp_GetTcpCheckConnectSign())
Local $error = @error
If $error Then
$dellSock = $TcpServerSocketList[$i][$Tcp_Socket]
_ArrayDelete($TcpServerSocketList, $i)
ExitLoop
EndIf
Next
ElseIf $state = $Tcp_ClientActive Then
Local $tcpRet = TCPSend($TcpMainSocket, Tcp_GetTcpCheckConnectSign())
Local $error = @error
If $error Then
Tcp_SetMainSocket($TcpNoSocket)
Tcp_SetConnectStatus($Tcp_NoConnection)
Tcp_SetState($Tcp_StartUpOk)
EndIf
EndIf
Tcp_ReloadTimer($TcpConnectCheckTimer)
EndIf
Return SetError(0,0,$dellSock)
EndFunc ;==>Tcp_CheckSocketListConnections
; #INTERNAL_USE_ONLY# ====================================================================================================================
; Name ..........: Tcp_DisonnectAllSockets
; Description ...:
; Syntax ........: Tcp_DisonnectAllSockets()
; Parameters ....:
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_DisonnectAllSockets()
If UBound($TcpServerSocketList, 1) > 1 Then
For $i = (UBound($TcpServerSocketList, 1) - 1) To 1 Step -1
If $TcpServerSocketList[$i][$Tcp_Socket] <> -1 Then
TCPCloseSocket($TcpServerSocketList[$i][$Tcp_Socket])
_ArrayDelete($TcpServerSocketList, $i)
EndIf
Next
EndIf
EndFunc ;==>Tcp_DisonnectAllSockets
; #INTERNAL_USE_ONLY# ====================================================================================================================
; Name ..........: Tcp_StopServer
; Description ...:
; Syntax ........: Tcp_StopServer()
; Parameters ....:
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_StopServer()
Local $ret = TCPCloseSocket(Tcp_GetMainSocket())
$error = @error
If $ret = 1 Then
Tcp_SetMainSocket($TcpNoSocket)
Tcp_SetConnectStatus($Tcp_NoConnection)
Tcp_SetState($Tcp_StartUpOk)
EndIf
Return SetError($error, 0, $ret)
EndFunc ;==>Tcp_StopServer
; #INTERNAL_USE_ONLY# ====================================================================================================================
; Name ..........: Tcp_InitUserDataParams
; Description ...:
; Syntax ........: Tcp_InitUserDataParams()
; Parameters ....:
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_InitUserDataParams()
$TcpUserDataParams[0][$Tcp_TransmitParam] = "Transmit Parameter"
$TcpUserDataParams[0][$Tcp_ReceiveParam] = "Receive Parameter"
EndFunc ;==>Tcp_InitUserDataParams
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]; #FUNCTION# ====================================================================================================================
; Name ..........: Tcp_AddUserDataParam
; Description ...:
; Syntax ........: Tcp_AddUserDataParam($tParam, $rParam)
; Parameters ....: $tParam - A dll struct value.
; $rParam - An unknown value.
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func Tcp_AddUserDataParam($tParam, $rParam)
Tcp_ArrayAdd2D($TcpUserDataParams, $Tcp_TransmitParam, $tParam)
$iUbound = UBound($TcpUserDataParams, 1) - 1
Tcp_ArrayAdd2D($TcpUserDataParams, $Tcp_ReceiveParam, $rParam, 1, $iUbound)
EndFunc ;==>Tcp_AddUserDataParam
Bei Fragen einfach melden!!!!
Viel Spaß damit