Andreik Posted July 28, 2008 Posted July 28, 2008 (edited) I have 3 computers and I want to create 2 scripts (server/client). I want that my client to send a file and server (from another computer) to receive the file and than print this file. I tried with this functions written by GtaSpider. expandcollapse popup;=============================================================================== ; ; Function Name: _FileSend ; Description:: Sending a File to an Server (See _FileReceive) ; Parameter(s): ;$sFile : The File to send ;$IP : The target IP Adress ;$PORT [Optional] : The Port to use (must be the same as by _FileRecevie!!) ;$iSplash [Optional] : 1(defaul) = show SplashText ; 0 = dont show SplashText ;$iWaitWhileConnected [Optional] : 0 = If TCPConnect faild (@error) Return with error Code 2 ; 1(Default) = If TCPConnect faild put it in a while until connected ; Requirement(s): - ; Return Value(s): On Succes Return 1 ; On faild Return -1 and @error code 1-3: ; @error = 1: File not exist ; @error = 2: TCPConnect faild (only able if $iWaitWhileConnected <> 1) ; @error = 3: Faild to Open File ; @error = 4: A Connectionproblem while sending ; Author(s): GtaSpider ; ;=============================================================================== Func _FileSend($sFile, $IP, $PORT = 4324, $iSplash = 1, $iWaitWhileConnected = 1) Local $iMainSocket = -1, $sBuff, $iFileOp, $sRecv If Not FileExists($sFile) Then Return SetError(1, 0, -1) If $iSplash Then $iSplash = SplashTextOn('', 'Try To Connect...', 200, 20, -1, -1, 1) TCPStartup() If Number($iWaitWhileConnected) = 1 Then While $iMainSocket = -1 $iMainSocket = TCPConnect($IP, $PORT) WEnd Else $iMainSocket = TCPConnect($IP, $PORT) If @error Then Return SetError(2, 0, -1) EndIf If $iSplash Then ControlSetText($iSplash, '', 'Static1', 'Read File...') $iFileOp = FileOpen($sFile, 16) If @error Then Return SetError(3, 0, -1) $sBuff = Binary(StringTrimLeft($sFile, StringInStr($sFile, "\", -1, -1)) & ",") & FileRead($iFileOp) FileClose($iFileOp) If $iSplash Then ControlSetText($iSplash, '', 'Static1', 'Sending File...') While BinaryLen($sBuff) $iSendReturn = TCPSend($iMainSocket, $sBuff) If @error Then Return SetError(4, 0, -1) TrayTip('', $iSendReturn, 1) $sBuff = BinaryMid($sBuff, $iSendReturn + 1, BinaryLen($sBuff) - $iSendReturn) WEnd If $iSplash Then ControlSetText($iSplash, '', 'Static1', 'Succesfull!') TCPCloseSocket($iMainSocket) TCPShutdown() Sleep(1000) SplashOff() Return 1 EndFunc expandcollapse popup;=============================================================================== ; ; Function Name: _FileReceive ; Description:: Receives a File from an Client (See _FileSend) ; Parameter(s): ;$sFileName [Optional] : The Filename to save (if default or "" then using the original File Name) ;$IP [Optional] : The IP where the Server run, Default = @IPAdress1 ;$PORT [Optional] : The Port to use (must be the same as by _FileSend!!) ;$iSplash [Optional] : 1(defaul) = show SplashText ; Requirement(s): - ; Return Value(s): On Succes Return 1 ; On faild Return -1 and @error code 1-3: ; @error = 1: Error creating Listening socket on IP ; @error = 2: Faild to open file ; @error = 3: Faild to write file ; Author(s): GtaSpider ; ;=============================================================================== Func _FileReceive($sFileName = '', $IP = @IPAddress1, $PORT = 4324,$iSplash=1) Local $iMainSocket, $iAccSocket = -1, $sBuff, $sRecv = "", $i = 0, $iFirstWhile = True TCPStartup() $iMainSocket = TCPListen($IP, $PORT) If @error Then Return SetError(1,0,-1) If $iSplash Then $iSplash = SplashTextOn('','Wait For Incoming...',200,20,-1,-1,1) While $iAccSocket = -1 $iAccSocket = TCPAccept($iMainSocket) Sleep(50) WEnd $sBuff = Binary ($sBuff) If $iSplash Then ControlSetText($iSplash,'','Static1','Incoming...') While $sRecv = "" $sRecv = TCPRecv($iAccSocket, 2048, 1) $sRecv = BinaryToString ($sRecv) WEnd If $iSplash Then ControlSetText($iSplash,'','Static1','Receive File...') While $sRecv <> "" If StringInStr($sRecv, ',') And $iFirstWhile Then $sTmp = StringLeft($sRecv, StringInStr($sRecv, ",") - 1) $sRecv = StringTrimLeft($sRecv, StringLen($sTmp) + 1) If StringLen($sFileName) < 1 Then $sFileName = $sTmp $iFirstWhile = False EndIf $sBuff &= $sRecv $sRecv = BinaryToString (TCPRecv($iAccSocket, 2048, 1)) If @error Then ExitLoop WEnd If $iSplash Then ControlSetText($iSplash,'','Static1','Write To File...') If FileExists($sFileName) Then $sTmp = StringSplit($sFileName, ".") If $sTmp[0] < 2 Then While 1 $i += 1 If Not FileExists($sFileName & "(" & $i & ")") Then $sFileName = $sFileName & "(" & $i & ")" ExitLoop EndIf WEnd Else While 1 $i += 1 If Not FileExists($sTmp[1] & "(" & $i & ")" & $sTmp[2]) Then $sFileName = $sTmp[1] & "(" & $i & ")." & $sTmp[2] ExitLoop EndIf WEnd EndIf EndIf $iFileOp = FileOpen($sFileName, 16 + 2) If @error Then Return SetError(2,0,-1) FileWrite($iFileOp, $sBuff) If @error Then Return SetError(3,0,-1) FileClose($iFileOp) If $iSplash Then ControlSetText($iSplash,'','Static1','Succesfull!') TCPCloseSocket($iAccSocket) TCPShutdown() Sleep(1000) Return 1 EndFunc;==>_FileReceive But I don't know extension of file (_FileRecv) so I can't use _FileRecv in this form. Any idea? Edited July 28, 2008 by Andreik
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