Kip Posted January 10, 2009 Author Share Posted January 10, 2009 (edited) New version. Download from first post. Warning! Some things have been changed. Please update yours script otherwise it will break. _TCP_Server_Send() and _TCP_Client_Send(), are merged into 1 function now: _TCP_Send() The parameters of the received callback function are changed. Previously: Func _MyReceivedFunc($hSocket, $iError, $sData) Which is now: Func _MyReceivedFunc($hSocket, $sData, $iError) And all callback functions must have at least 2 parameters. Func _MyCallbackFunc($hSocket, $iError); Bump. Please help. This issue is pissing me off. Client does not send to server. Or server is not receiving. @Firestorm: I hope this solves your problem. Edited January 10, 2009 by Kip MailSpons: Fake SMTP server for safe email testing Dutch postcode & address API. Link to comment Share on other sites More sharing options...
Skrip Posted January 11, 2009 Share Posted January 11, 2009 I tried to run it, and this was the output. C:\Users\DS\Documents\Scripts\TCP.au3(170,6) : ERROR: syntax error For UBound ~~~~^ C:\Users\DS\Documents\Scripts\TCP.au3(68,29) : ERROR: _ASocket(): undefined function. $hListenSocket = _ASocket( ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\DS\Documents\Scripts\TCP.au3(71,65) : ERROR: _ASockSelect(): undefined function. _ASockSelect( $hListenSocket, $__TCP_WINDOW, 0x0400, $FD_ACCEPT) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\DS\Documents\Scripts\TCP.au3(75,45) : ERROR: _ASockListen(): undefined function. _ASockListen( $hListenSocket, $sIP, $iPort ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\DS\Documents\Scripts\TCP.au3(88,35) : ERROR: _HiWord(): undefined function. Local $iError = _HiWord( $LParam ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\DS\Documents\Scripts\TCP.au3(89,35) : ERROR: _LoWord(): undefined function. Local $iEvent = _LoWord( $LParam ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\DS\Documents\Scripts\TCP.au3(104,71) : ERROR: __TCP_Server_OnSocketEvent(): undefined function. GUIRegisterMsg(0x0400 + $uBound - 1, "__TCP_Server_OnSocketEvent" ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\DS\Documents\Scripts\TCP.au3(143,46) : ERROR: _ASockShutdown(): undefined function. _ASockShutdown($__TCP_SOCKETS[$iElement][0]) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\DS\Documents\Scripts\TCP.au3(146,43) : ERROR: ___ArrayDelete(): undefined function. ___ArrayDelete($__TCP_SOCKETS, $iElement) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\DS\Documents\Scripts\Computer_Server.au3 - 9 error(s), 0 warning(s) [left][sub]We're trapped in the belly of this horrible machine.[/sub][sup]And the machine is bleeding to death...[/sup][sup][/sup][/left] Link to comment Share on other sites More sharing options...
picaxe Posted January 11, 2009 Share Posted January 11, 2009 Thanks for the update, Kip, I'm using just this for a telnet script client and the update works fine with the following small correction. C:\Users\DS\Documents\Scripts\TCP.au3(170,6) : ERROR: syntax error For UBoundThis func was missing var $iFunc _TCP_Server_Stop() _ASockShutdown($__TCP_SOCKETS[0][0]) TCPCloseSocket($__TCP_SOCKETS[0][0]) $__TCP_SOCKETS[0][0] = "" $__TCP_SOCKETS[0][1] = "" $__TCP_SOCKETS[0][2] = "" $__TCP_SOCKETS[0][3] = "" $__TCP_SOCKETS[0][4] = "" $__TCP_SOCKETS[0][5] = "" $__TCP_SOCKETS[0][6] = "" For $i = UBound($__TCP_SOCKETS)-1 to 1 Step -1 ___ArrayDelete($__TCP_SOCKETS, $i) Next Return 1 EndFunc Link to comment Share on other sites More sharing options...
FireFox Posted January 11, 2009 Share Posted January 11, 2009 @Kip downloaded last include and tested example wich have many errors : C:\Program Files\AutoIt3\Include\TCP.au3(170,6) : ERROR: syntax error For UBound ~~~~^ C:\Program Files\AutoIt3\Include\TCP.au3(68,29) : ERROR: _ASocket(): undefined function. $hListenSocket = _ASocket( ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Program Files\AutoIt3\Include\TCP.au3(71,65) : ERROR: _ASockSelect(): undefined function. _ASockSelect( $hListenSocket, $__TCP_WINDOW, 0x0400, $FD_ACCEPT) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Program Files\AutoIt3\Include\TCP.au3(75,45) : ERROR: _ASockListen(): undefined function. _ASockListen( $hListenSocket, $sIP, $iPort ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Program Files\AutoIt3\Include\TCP.au3(88,35) : ERROR: _HiWord(): undefined function. Local $iError = _HiWord( $LParam ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Program Files\AutoIt3\Include\TCP.au3(89,35) : ERROR: _LoWord(): undefined function. Local $iEvent = _LoWord( $LParam ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Program Files\AutoIt3\Include\TCP.au3(104,71) : ERROR: __TCP_Server_OnSocketEvent(): undefined function. GUIRegisterMsg(0x0400 + $uBound - 1, "__TCP_Server_OnSocketEvent" ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Program Files\AutoIt3\Include\TCP.au3(143,46) : ERROR: _ASockShutdown(): undefined function. _ASockShutdown($__TCP_SOCKETS[$iElement][0]) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Program Files\AutoIt3\Include\TCP.au3(146,43) : ERROR: ___ArrayDelete(): undefined function. ___ArrayDelete($__TCP_SOCKETS, $iElement) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ Cheers, FireFox. Link to comment Share on other sites More sharing options...
Skrip Posted January 11, 2009 Share Posted January 11, 2009 (edited) All those errors get fixed in post #103, thank you picaxe. Please update. I'm testing the send function now. EDIT: Alright, it seems that nothing can connect to the server anymore. Edited January 11, 2009 by Firestorm [left][sub]We're trapped in the belly of this horrible machine.[/sub][sup]And the machine is bleeding to death...[/sup][sup][/sup][/left] Link to comment Share on other sites More sharing options...
FireFox Posted January 11, 2009 Share Posted January 11, 2009 (edited) @FireStorm ...how could I now that errors got fixed in post 103 ? Kip should update his first post thats all... Edit : only one of all my errors got fixed from post 103 Cheers, FireFox. Edited January 11, 2009 by FireFox Link to comment Share on other sites More sharing options...
Skrip Posted January 11, 2009 Share Posted January 11, 2009 (edited) All my errors were fixed after I updated that function. We had the same errors.Here is the fixed version.CODE#cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.0.0 Author: Kip Script Function: TCP UDF v3#ce ----------------------------------------------------------------------------; Script Start - Add your code below here#csFunctions: _TCP_Server_Create($iPort, $sIP="0.0.0.0") _TCP_Server_Broadcast($sData) _TCP_Server_ClientList() _TCP_Server_ClientIP($hSocket) _TCP_Server_DisconnectClient($hSocket) _TCP_Server_Stop() _TCP_Client_Create($sIP , $iPort) _TCP_Client_Stop($hSocket) _TCP_Send($hSocket, $sText) _TCP_RegisterEvent($hSocket, $iEvent, $sFunction)Register event values: $TCP_SEND ; Function ($hSocket, $iError) $TCP_RECEIVE ; Function ($hSocket, $sReceived, $iError) $TCP_CONNECT ; Function ($hSocket, $iError) => Client only $TCP_DISCONNECT ; Function ($hSocket, $iError) $TCP_NEWCLIENT ; Function ($hSocket, $iError) => Server only#ceGlobal Const $FD_READ = 1Global Const $FD_WRITE = 2Global Const $FD_OOB = 4Global Const $FD_ACCEPT = 8Global Const $FD_CONNECT = 16Global Const $FD_CLOSE = 32Local $hWs2_32 = -1Global Const $TCP_SEND = 1Global Const $TCP_RECEIVE = 2Global Const $TCP_CONNECT = 4Global Const $TCP_DISCONNECT = 8Global Const $TCP_NEWCLIENT = 16TCPStartup()Global Const $__TCP_WINDOW = GUICreate("Async Sockets UDF")Global $__TCP_SOCKETS[1][7]Func _TCP_Server_Create($iPort, $sIP="0.0.0.0") $hListenSocket = _ASocket( ) _ASockSelect( $hListenSocket, $__TCP_WINDOW, 0x0400, $FD_ACCEPT) GUIRegisterMsg( 0x0400, "__TCP_OnAccept" ) _ASockListen( $hListenSocket, $sIP, $iPort ) $__TCP_SOCKETS[0][0] = $hListenSocket $__TCP_SOCKETS[0][1] = 0x0400 Return $hListenSocket EndFuncFunc __TCP_OnAccept($hWnd, $iMsgID, $WParam, $LParam) Local $hSocket = $WParam Local $iError = _HiWord( $LParam ) Local $iEvent = _LoWord( $LParam ) If $iMsgID = $__TCP_SOCKETS[0][1] Then If $iEvent = $FD_ACCEPT Then If Not $iError Then ReDim $__TCP_SOCKETS[uBound($__TCP_SOCKETS)+1][7] $uBound = UBound($__TCP_SOCKETS) $hClient = TCPAccept($hSocket) _ASockSelect($hClient, $__TCP_WINDOW, 0x0400 + $uBound - 1, BitOR($FD_READ, $FD_WRITE, $FD_CLOSE)) GUIRegisterMsg(0x0400 + $uBound - 1, "__TCP_Server_OnSocketEvent" ) $__TCP_SOCKETS[uBound($__TCP_SOCKETS)-1][0] = $hClient $__TCP_SOCKETS[uBound($__TCP_SOCKETS)-1][1] = 0x0400 + $uBound - 1 Call($__TCP_SOCKETS[0][6], $hClient, $iError) Else Call($__TCP_SOCKETS[0][6], 0, $iError) EndIf ElseIf $iEvent = $FD_CONNECT Then Call($__TCP_SOCKETS[0][4], $hSocket, $iError) EndIf EndIf EndFuncFunc _TCP_Client_Stop($hSocket) $iElement = 0 For $i = 1 to UBound($__TCP_SOCKETS)-1 If $__TCP_SOCKETS[$i][0] = $hSocket Then $iElement = $i ExitLoop EndIf Next If $iElement Then _ASockShutdown($__TCP_SOCKETS[$iElement][0]) TCPCloseSocket($__TCP_SOCKETS[$iElement][0]) ___ArrayDelete($__TCP_SOCKETS, $iElement) Return 1 EndIf Return 0 EndFuncFunc _TCP_Server_Stop() _ASockShutdown($__TCP_SOCKETS[0][0]) TCPCloseSocket($__TCP_SOCKETS[0][0]) $__TCP_SOCKETS[0][0] = "" $__TCP_SOCKETS[0][1] = "" $__TCP_SOCKETS[0][2] = "" $__TCP_SOCKETS[0][3] = "" $__TCP_SOCKETS[0][4] = "" $__TCP_SOCKETS[0][5] = "" $__TCP_SOCKETS[0][6] = "" For $i = UBound($__TCP_SOCKETS)-1 to 1 Step -1 ___ArrayDelete($__TCP_SOCKETS, $i) Next Return 1 EndFuncFunc __TCP_Server_OnSocketEvent( $hWnd, $iMsgID, $WParam, $LParam ) Local $hSocket = $WParam Local $iError = _HiWord( $LParam ) Local $iEvent = _LoWord( $LParam ) Local $sDataBuff $hSocket = 0 $iElement = 0 For $i = 1 to UBound($__TCP_SOCKETS)-1 If $__TCP_SOCKETS[$i][1] = $iMsgID Then $hSocket = $__TCP_SOCKETS[$i][0] $iElement = $i ExitLoop EndIf Next If $hSocket Then Switch $iEvent Case $FD_READ $sDataBuff = TCPRecv($hSocket, 1024) Call($__TCP_SOCKETS[0][2], $hSocket, $sDataBuff, $iError) Case $FD_WRITE Call($__TCP_SOCKETS[0][3], $hSocket, $iError) Case $FD_CLOSE _ASockShutdown($hSocket) TCPCloseSocket($hSocket) Call($__TCP_SOCKETS[0][5], $hSocket, $iError) ___ArrayDelete($__TCP_SOCKETS, $iElement) EndSwitch EndIf EndFuncFunc _TCP_Server_DisconnectClient($hSocket) $iElement = 0 For $i = 1 to UBound($__TCP_SOCKETS)-1 If $__TCP_SOCKETS[$i][0] = $hSocket Then $iElement = $i ExitLoop EndIf Next If $iElement Then _ASockShutdown($hSocket) TCPCloseSocket($hSocket) ___ArrayDelete($__TCP_SOCKETS, $iElement) Return 1 EndIf Return 0 EndFuncFunc _TCP_Server_ClientList() Local $aReturn[1] For $i = 1 to UBound($__TCP_SOCKETS)-1 If $__TCP_SOCKETS[$i][0] Then ReDim $aReturn[uBound($aReturn)+1] $aReturn[uBound($aReturn)-1] = $__TCP_SOCKETS[$i][0] EndIf Next $aReturn[0] = UBound($aReturn)-1 Return $aReturn EndFuncFunc _TCP_Server_Broadcast($sData) For $i = 1 to UBound($__TCP_SOCKETS)-1 If $__TCP_SOCKETS[$i][0] Then TCPSend($__TCP_SOCKETS[$i][0], $sData) Next EndFuncFunc _TCP_Client_Create($sIP , $iPort) ReDim $__TCP_SOCKETS[uBound($__TCP_SOCKETS)+1][7] $uBound = UBound($__TCP_SOCKETS) $hSocket = _ASocket() $__TCP_SOCKETS[uBound($__TCP_SOCKETS)-1][0] = $hSocket $__TCP_SOCKETS[uBound($__TCP_SOCKETS)-1][1] = 0x0400 + (UBound($__TCP_SOCKETS)-1) _ASockSelect( $hSocket, $__TCP_WINDOW, 0x0400 + (UBound($__TCP_SOCKETS)-1), BitOR( $FD_READ, $FD_WRITE, $FD_CONNECT, $FD_CLOSE ) ) GUIRegisterMsg( 0x0400 + (UBound($__TCP_SOCKETS)-1), "__TCP_Client_OnSocketEvent" ) _ASockConnect( $hSocket, $sIP, $iPort ) Return $hSocket EndFuncFunc _TCP_RegisterEvent($hSocket, $iEvent, $sFunction) Local $iSelected = 0 If $__TCP_SOCKETS[0][0] Then $iSelected = 0 Else For $i = 0 to UBound($__TCP_SOCKETS)-1 If $__TCP_SOCKETS[$i][0] = $hSocket Then $iSelected = $i ExitLoop EndIf Next If Not $iSelected Then Return 0 EndIf Switch $iEvent Case $TCP_SEND $__TCP_SOCKETS[$iSelected][3] = $sFunction Case $TCP_RECEIVE $__TCP_SOCKETS[$iSelected][2] = $sFunction Case $TCP_CONNECT $__TCP_SOCKETS[$iSelected][4] = $sFunction Case $TCP_DISCONNECT $__TCP_SOCKETS[$iSelected][5] = $sFunction Case $TCP_NEWCLIENT $__TCP_SOCKETS[$iSelected][6] = $sFunction Case Else Return 0 EndSwitch Return 1 EndFuncFunc _TCP_Server_ClientIP($hSocket) Local $pSocketAddress, $aReturn $pSocketAddress = DllStructCreate("short;ushort;uint;char[8]") $aReturn = DllCall("Ws2_32.dll", "int", "getpeername", "int", $hSocket, "ptr", DllStructGetPtr($pSocketAddress), "int*", DllStructGetSize($pSocketAddress)) If @error Or $aReturn[0] <> 0 Then Return 0 $aReturn = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($pSocketAddress, 3)) If @error Then Return 0 $pSocketAddress = 0 Return $aReturn[0] EndFuncFunc _TCP_Send($hSocket, $sText) Return TCPSend($hSocket, $sText) EndFuncFunc __TCP_Client_OnSocketEvent( $hWnd, $iMsgID, $WParam, $LParam ) Local $iError = _HiWord( $LParam ) Local $iEvent = _LoWord( $LParam ) $hSocket = 0 $iElement = 0 For $i = 1 to UBound($__TCP_SOCKETS)-1 If $__TCP_SOCKETS[$i][1] = $iMsgID Then $hSocket = $__TCP_SOCKETS[$i][0] $iElement = $i ExitLoop EndIf Next If $hSocket Then Switch $iEvent Case $FD_READ; Data has arrived! $sDataBuff = TCPRecv( $hSocket, 1024) Call($__TCP_SOCKETS[$i][2], $hSocket, $sDataBuff, $iError) $sDataBuff = "" Case $FD_WRITE Call($__TCP_SOCKETS[$i][3], $hSocket, $iError) Case $FD_CONNECT Call($__TCP_SOCKETS[$i][4], $hSocket, $iError) Case $FD_CLOSE _ASockShutdown( $hSocket ) TCPCloseSocket( $hSocket ) Call($__TCP_SOCKETS[$i][5], $hSocket, $iError) ___ArrayDelete($__TCP_SOCKETS, $iElement) EndSwitch EndIf EndFunc;==================================================================================================================; ; Zatorg's Asynchronous Sockets UDF Starts from here.; ;==================================================================================================================Func _ASocket($iAddressFamily = 2, $iType = 1, $iProtocol = 6) If $hWs2_32 = -1 Then $hWs2_32 = DllOpen( "Ws2_32.dll" ) Local $hSocket = DllCall($hWs2_32, "uint", "socket", "int", $iAddressFamily, "int", $iType, "int", $iProtocol) If @error Then SetError(1, @error) Return -1 EndIf If $hSocket[ 0 ] = -1 Then SetError(2, _WSAGetLastError()) Return -1 EndIf Return $hSocket[ 0 ]EndFunc ;==>_ASocketFunc _ASockShutdown($hSocket) If $hWs2_32 = -1 Then $hWs2_32 = DllOpen( "Ws2_32.dll" ) Local $iRet = DllCall($hWs2_32, "int", "shutdown", "uint", $hSocket, "int", 2) If @error Then SetError(1, @error) Return False EndIf If $iRet[ 0 ] <> 0 Then SetError(2, _WSAGetLastError()) Return False EndIf Return TrueEndFunc ;==>_ASockShutdownFunc _ASockClose($hSocket) If $hWs2_32 = -1 Then $hWs2_32 = DllOpen( "Ws2_32.dll" ) Local $iRet = DllCall($hWs2_32, "int", "closesocket", "uint", $hSocket) If @error Then SetError(1, @error) Return False EndIf If $iRet[ 0 ] <> 0 Then SetError(2, _WSAGetLastError()) Return False EndIf Return TrueEndFunc ;==>_ASockCloseFunc _ASockSelect($hSocket, $hWnd, $uiMsg, $iEvent) If $hWs2_32 = -1 Then $hWs2_32 = DllOpen( "Ws2_32.dll" ) Local $iRet = DllCall( _ $hWs2_32, _ "int", "WSAAsyncSelect", _ "uint", $hSocket, _ "hwnd", $hWnd, _ "uint", $uiMsg, _ "int", $iEvent _ ) If @error Then SetError(1, @error) Return False EndIf If $iRet[ 0 ] <> 0 Then SetError(2, _WSAGetLastError()) Return False EndIf Return TrueEndFunc ;==>_ASockSelect; Note: you can see that $iMaxPending is set to 5 by default.; IT DOES NOT MEAN THAT DEFAULT = 5 PENDING CONNECTIONS; 5 == SOMAXCONN, so don't worry be happyFunc _ASockListen($hSocket, $sIP, $uiPort, $iMaxPending = 5); 5 == SOMAXCONN => No need to change it. Local $iRet Local $stAddress If $hWs2_32 = -1 Then $hWs2_32 = DllOpen( "Ws2_32.dll" ) $stAddress = __SockAddr($sIP, $uiPort) If @error Then SetError(@error, @extended) Return False EndIf $iRet = DllCall($hWs2_32, "int", "bind", "uint", $hSocket, "ptr", DllStructGetPtr($stAddress), "int", DllStructGetSize($stAddress)) If @error Then SetError(3, @error) Return False EndIf If $iRet[ 0 ] <> 0 Then $stAddress = 0; Deallocate SetError(4, _WSAGetLastError()) Return False EndIf $iRet = DllCall($hWs2_32, "int", "listen", "uint", $hSocket, "int", $iMaxPending) If @error Then SetError(5, @error) Return False EndIf If $iRet[ 0 ] <> 0 Then $stAddress = 0; Deallocate SetError(6, _WSAGetLastError()) Return False EndIf Return TrueEndFunc ;==>_ASockListenFunc _ASockConnect($hSocket, $sIP, $uiPort) Local $iRet Local $stAddress If $hWs2_32 = -1 Then $hWs2_32 = DllOpen( "Ws2_32.dll" ) $stAddress = __SockAddr($sIP, $uiPort) If @error Then SetError(@error, @extended) Return False EndIf $iRet = DllCall($hWs2_32, "int", "connect", "uint", $hSocket, "ptr", DllStructGetPtr($stAddress), "int", DllStructGetSize($stAddress)) If @error Then SetError(3, @error) Return False EndIf $iRet = _WSAGetLastError() If $iRet = 10035 Then; WSAEWOULDBLOCK Return True; Asynchronous connect attempt has been started. EndIf SetExtended(1); Connected immediately Return TrueEndFunc ;==>_ASockConnect; A wrapper function to ease all the pain in creating and filling the sockaddr structFunc __SockAddr($sIP, $iPort, $iAddressFamily = 2) Local $iRet Local $stAddress If $hWs2_32 = -1 Then $hWs2_32 = DllOpen( "Ws2_32.dll" ) $stAddress = DllStructCreate("short; ushort; uint; char[8]") If @error Then SetError(1, @error) Return False EndIf DllStructSetData($stAddress, 1, $iAddressFamily) $iRet = DllCall($hWs2_32, "ushort", "htons", "ushort", $iPort) DllStructSetData($stAddress, 2, $iRet[ 0 ]) $iRet = DllCall($hWs2_32, "uint", "inet_addr", "str", $sIP) If $iRet[ 0 ] = 0xffffffff Then; INADDR_NONE $stAddress = 0; Deallocate SetError(2, _WSAGetLastError()) Return False EndIf DllStructSetData($stAddress, 3, $iRet[ 0 ]) Return $stAddressEndFunc ;==>__SockAddrFunc _WSAGetLastError() If $hWs2_32 = -1 Then $hWs2_32 = DllOpen( "Ws2_32.dll" ) Local $iRet = DllCall($hWs2_32, "int", "WSAGetLastError") If @error Then ConsoleWrite("+> _WSAGetLastError(): WSAGetLastError() failed. Script line number: " & @ScriptLineNumber & @CRLF) SetExtended(1) Return 0 EndIf Return $iRet[ 0 ]EndFunc ;==>_WSAGetLastError; Got these here:; http://www.autoitscript.com/forum/index.ph...amp;hl=MAKELONGFunc _MakeLong($LoWord, $HiWord) Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF)); Thanks LarryEndFunc ;==>_MakeLongFunc _HiWord($Long) Return BitShift($Long, 16); Thanks ValikEndFunc ;==>_HiWordFunc _LoWord($Long) Return BitAND($Long, 0xFFFF); Thanks ValikEndFunc ;==>_LoWord; ========================================= Array functions; #FUNCTION# ====================================================================================================================; Name...........: _ArrayDelete; Description ...: Deletes the specified element from the given array.; Syntax.........: _ArrayDelete(ByRef $avArray, $iElement); Parameters ....: $avArray - Array to modify; $iElement - Element to delete; Return values .: Success - New size of the array; Failure - 0, sets @error to:; |1 - $avArray is not an array; |3 - $avArray has too many dimensions (only up to 2D supported); |(2 - Deprecated error code); Author ........: Cephas <cephas at clergy dot net>; Modified.......: Jos van der Zande <jdeb at autoitscript dot com> - array passed ByRef, Ultima - 2D arrays supported, reworked function (no longer needs temporary array; faster when deleting from end); Remarks .......: If the array has one element left (or one row for 2D arrays), it will be set to "" after _ArrayDelete() is used on it.; Related .......: _ArrayAdd, _ArrayInsert, _ArrayPop, _ArrayPush; Link ..........;; Example .......; Yes; ===============================================================================================================================Func ___ArrayDelete(ByRef $avArray, $iElement) If Not IsArray($avArray) Then Return SetError(1, 0, 0) Local $iUBound = UBound($avArray, 1) - 1 If Not $iUBound Then $avArray = "" Return 0 EndIf ; Bounds checking If $iElement < 0 Then $iElement = 0 If $iElement > $iUBound Then $iElement = $iUBound ; Move items after $iElement up by 1 Switch UBound($avArray, 0) Case 1 For $i = $iElement To $iUBound - 1 $avArray[$i] = $avArray[$i + 1] Next ReDim $avArray[$iUBound] Case 2 Local $iSubMax = UBound($avArray, 2) - 1 For $i = $iElement To $iUBound - 1 For $j = 0 To $iSubMax $avArray[$i][$j] = $avArray[$i + 1][$j] Next Next ReDim $avArray[$iUBound][$iSubMax + 1] Case Else Return SetError(3, 0, 0) EndSwitch Return $iUBoundEndFunc ;==>_ArrayDeleteRun tidy on it. I don't know if it'll copypaste the tabs.Although, I don't know about fixed. Nothing can connect to the server. Edited January 11, 2009 by Firestorm [left][sub]We're trapped in the belly of this horrible machine.[/sub][sup]And the machine is bleeding to death...[/sup][sup][/sup][/left] Link to comment Share on other sites More sharing options...
FireFox Posted January 11, 2009 Share Posted January 11, 2009 @FireStorm forgot to update fixed code thanks anyway Cheers, FireFox. Link to comment Share on other sites More sharing options...
Skrip Posted January 11, 2009 Share Posted January 11, 2009 Let me know if you get everything working correctly. (Client/Server connecting, and sending info from the server to the client and client to server) [left][sub]We're trapped in the belly of this horrible machine.[/sub][sup]And the machine is bleeding to death...[/sup][sup][/sup][/left] Link to comment Share on other sites More sharing options...
FireFox Posted January 11, 2009 Share Posted January 11, 2009 @FireStorm Ive just replaced include and changed little things for the new version for my instant messanger script with server, but it doesnt work anymore Cheers, FireFox. Link to comment Share on other sites More sharing options...
Kip Posted January 11, 2009 Author Share Posted January 11, 2009 Ive just replaced include and changed little things for the new version for my instant messanger script with server, but it doesnt work anymore sad.gifWhat the....Notice that the Connect callback only works on a client. Not server. (a new thing ) MailSpons: Fake SMTP server for safe email testing Dutch postcode & address API. Link to comment Share on other sites More sharing options...
ZeR0 Posted January 11, 2009 Share Posted January 11, 2009 (edited) Hi every body, i have problems using this udf:http://img81.imageshack.us/my.php?image=errorwg7.pngWhat happend??? Edited January 11, 2009 by ZeR0 Link to comment Share on other sites More sharing options...
ZeR0 Posted January 11, 2009 Share Posted January 11, 2009 Sorry the double post, but ur new version have problems... i have checked with some scripts and have problems ... Link to comment Share on other sites More sharing options...
Skrip Posted January 11, 2009 Share Posted January 11, 2009 (edited) Check the new args for that function. It isn't broken... EDIT: But still nothing can connect to the server... Edited January 11, 2009 by Firestorm [left][sub]We're trapped in the belly of this horrible machine.[/sub][sup]And the machine is bleeding to death...[/sup][sup][/sup][/left] Link to comment Share on other sites More sharing options...
ZeR0 Posted January 12, 2009 Share Posted January 12, 2009 I have checked now, tanks!... But i need the old version man, can u paste here? Link to comment Share on other sites More sharing options...
Skrip Posted January 12, 2009 Share Posted January 12, 2009 Don't have it. I just need this new one to work right. But I don't have the old. [left][sub]We're trapped in the belly of this horrible machine.[/sub][sup]And the machine is bleeding to death...[/sup][sup][/sup][/left] Link to comment Share on other sites More sharing options...
Kip Posted January 12, 2009 Author Share Posted January 12, 2009 (edited) Hi every body, i have problems using this udf: http://img81.imageshack.us/my.php?image=errorwg7.png What happend???Oh sorry, there is a new $hSocket parameter. $hClient = _TCP_Client_Create("0.0.0.0", 80) _TCP_RegisterEvent($hClient, $TCP_RECEIVE, "func") Could someone please upload a 'broken' script. Because everything works fine for me. Edit: Fixed $i bug Edited January 12, 2009 by Kip MailSpons: Fake SMTP server for safe email testing Dutch postcode & address API. Link to comment Share on other sites More sharing options...
picaxe Posted January 12, 2009 Share Posted January 12, 2009 (edited) Could someone please upload a 'broken' script. Because everything works fine for me.Just confirmed the latest server is OK for me. I had been using only the client before.EDIT: For those who have server problems, check _TCP_Server_Create func params. They have been swapped to port, ipaddr. Edited January 12, 2009 by picaxe Link to comment Share on other sites More sharing options...
Skrip Posted January 12, 2009 Share Posted January 12, 2009 I'll post my non-working script when I get home. I may have gotten the syntax wrong on the _TCP_Server_Create() func. Although, I'm not sure. [left][sub]We're trapped in the belly of this horrible machine.[/sub][sup]And the machine is bleeding to death...[/sup][sup][/sup][/left] Link to comment Share on other sites More sharing options...
FireFox Posted January 12, 2009 Share Posted January 12, 2009 (edited) @picaxe ops, Im owned @Kip Working great now !! Cheers, FireFox. Edited January 12, 2009 by FireFox Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now