Global Const $tagSockAddr = "USHORT sa_family;char sa_data[14]" Global Const $tagSockAddr_In = "short sin_family;USHORT sin_port;ULONG sin_addr;char sin_zero[8]" Global Const $AF_INET = 2 TCPStartup() ;WSAStartup Global $iSock = _socket() ConsoleWrite("Socket: " & $iSock & @CRLF) Global $iBind = _bind($iSock, @IPAddress1, 1234) ;Lokale IP-Adresse und Port zu verwenden ConsoleWrite("Bind error: " & $iBind & @CRLF) ; 0 ist OK Global $iConnect = _connect($iSock, "10.1.6.51", 80) ConsoleWrite("Connect error: " & $iConnect & @CRLF) ; 0 ist OK If $iConnect Then ConsoleWrite("Windows Sockets Error Codes: " & _WSAGetLastError() & @CRLF) _closesocket($iSock) TCPShutdown() ;WSACleanup EndIf Global $sToSend = "GET /input1?PW=&" Global $tSendBuffer = DllStructCreate("char[" & StringLen($sToSend) & "]") DllStructSetData($tSendBuffer, 1, $sToSend) Global $iSend = _send($iSock, $tSendBuffer) ConsoleWrite("Bytes sent: " & $iSend & @CRLF) Global $tRecvBuffer = DllStructCreate("char[64]") Global $iRecv = _recv($iSock, $tRecvBuffer) ConsoleWrite("Bytes received: " & $iRecv & @CRLF) ConsoleWrite("Daten empfangen: " & DllStructGetData($tRecvBuffer, 1) & @CRLF) _closesocket($iSock) TCPShutdown() ;WSACleanup Func _socket() ; AF_INET, SOCK_STREAM, IPPROTO_TCP Local $aRet = DllCall("ws2_32.dll", "UINT", "socket", "int", $AF_INET, "int", 1, "int", 6) Return $aRet[0] EndFunc ;==>_socket Func _closesocket($iSocket) Local $aRet = DllCall("ws2_32.dll", "int", "closesocket", "UINT", $iSocket) Return $aRet[0] EndFunc ;==>_closesocket Func _bind($iSocket, $sIP, $iPort) Local $tSockAddr_In = DllStructCreate($tagSockAddr_In) Local $pSockAddr_In = DllStructGetPtr($tSockAddr_In) Local $iSizeSockAddr_In = DllStructGetSize($tSockAddr_In) DllStructSetData($tSockAddr_In, "sin_family", $AF_INET) DllStructSetData($tSockAddr_In, "sin_port", _htons($iPort)) DllStructSetData($tSockAddr_In, "sin_addr", _inet_addr($sIP)) Local $aRet = DllCall("ws2_32.dll", "int", "bind", "UINT", $iSocket, "ptr", $pSockAddr_In, "int", $iSizeSockAddr_In) Return $aRet[0] EndFunc ;==>_bind Func _connect($iSocket, $sIP, $iPort) Local $tSockAddr_In = DllStructCreate($tagSockAddr_In) Local $pSockAddr_In = DllStructGetPtr($tSockAddr_In) Local $iSizeSockAddr_In = DllStructGetSize($tSockAddr_In) DllStructSetData($tSockAddr_In, "sin_family", $AF_INET) DllStructSetData($tSockAddr_In, "sin_port", _htons($iPort)) DllStructSetData($tSockAddr_In, "sin_addr", _inet_addr($sIP)) Local $aRet = DllCall("ws2_32.dll", "int", "connect", "UINT", $iSocket, "ptr", $pSockAddr_In, "int", $iSizeSockAddr_In) Return $aRet[0] EndFunc ;==>_connect Func _send($iSocket, ByRef $tBuffer, $iFlags = 0) Local $pBuffer = DllStructGetPtr($tBuffer) Local $tSize = DllStructGetSize($tBuffer) Local $aRet = DllCall("ws2_32.dll", "int", "send", "int", $iSocket, "ptr", $pBuffer, "int", $tSize, "int", $iFlags) Return $aRet[0] EndFunc ;==>_send Func _recv($iSocket, ByRef $tBuffer, $iFlags = 0) Local $pBuffer = DllStructGetPtr($tBuffer) Local $tSize = DllStructGetSize($tBuffer) Local $aRet = DllCall("ws2_32.dll", "int", "recv", "uint", $iSocket, "ptr", $pBuffer, "int", $tSize, "int", $iFlags) Return $aRet[0] EndFunc ;==>_recv Func _inet_addr($sIP) Local $aRet = DllCall("ws2_32.dll", "ULONG", "inet_addr", "str", $sIP) Return $aRet[0] EndFunc ;==>_inet_addr Func _htons($iPort) Local $aRet = DllCall("ws2_32.dll", "USHORT", "htons", "USHORT", $iPort) Return $aRet[0] EndFunc ;==>_htons Func _WSAGetLastError() Local $aRet = DllCall("ws2_32.dll", "int", "WSAGetLastError") Return $aRet[0] EndFunc ;==>_WSAGetLastError