#include #include #include #include #include #include ;============================================================================= Opt("TrayMenuMode", 1) Opt("TrayIconHide", 0) Opt("GUIResizeMode", 1) Opt("TrayIconDebug", 1) Opt("TrayAutoPause", 0) Opt("MouseCoordMode", 2) Opt("GUIOnEventMode", 1) Opt("MustDeclareVars", 1) Opt("GUIEventOptions", 1) Opt("TrayOnEventMode", 1) Opt("ExpandEnvStrings", 1) Opt("WinDetectHiddenText", 1) ;============================================================================= Global $CurrentPath = @ScriptDir Global $ServerIp = @IPAddress1 Global $ServerPort = '50911' Global $iOffset = 0 Global $i4KiB = 2048 Global $iFileSize, $Split Global $UpdateDir_MainSocket = -1 Global $UpdateDir_Ret = -1 Global $UpdateDir_Buffer = '' Global $UpdateDir_Bytes = 0 Global $FO, $FolderSel, $SelectFile, $iError, $Socket, $FileDataList, $hFile, $File, $SecSplit, $ExitItem, $ServerIpInpt Global $GUI = GUICreate('TCP', 400, 200, 0, 0, $WS_SYSMENU) $ServerIpInpt = GUICtrlCreateInput(@IPAddress1, 10, 10, 100, 20) $SelectFile = GUICtrlCreateButton('FileToSend', 10, 60, 100, 20) GUICtrlSetOnEvent($SelectFile, "FileSel") $ExitItem = TrayCreateItem("Close") TrayItemSetOnEvent(-1, "Quit") TraySetState(1) TraySetClick(8) ;GUISetIcon($InstallDir & '\1.ico', -1, $GUI) ;TraySetIcon($InstallDir & '\1.ico') GUISetOnEvent($GUI_EVENT_CLOSE, "Quit") ;GUISetOnEvent($GUI_EVENT_MINIMIZE, "Minimize") GUISetState(@SW_SHOW, $GUI) ;============================================================================= TCPStartup() $UpdateDir_MainSocket = TCPListen($ServerIp, $ServerPort) ConsoleWrite('TCPListen: '&$UpdateDir_MainSocket&@CRLF) ;============================================================================= While 1 $ServerIp = GUICtrlRead($ServerIpInpt) $Socket = TCPAccept($UpdateDir_MainSocket) If $Socket <> -1 Then Receive() Quit() EndIf Sleep(100) WEnd ;============================================================================= Func FileSel() $FolderSel = FileSelectFolder('Select Folder to Upload', @ScriptDir, 6, @ScriptDir) If $FolderSel <> '' Then Upload() EndIf EndFunc ;============================================================================= Func Upload() $FileDataList = _FileListToArrayRec($FolderSel, Default, $FLTAR_FILES, 1, 0, 1) For $i = 1 To $FileDataList[0] Do $Socket = TCPConnect($ServerIp, $ServerPort) Sleep(100) Until $Socket <> -1 ConsoleWrite('Connected! = ' & $Socket & @CRLF) ConsoleWrite('Sent File: '& $FileDataList[$i]&@CRLF) TCPSend($Socket, $FileDataList[$i]&'') ;============================================================================= $iFileSize = FileGetSize($FolderSel & '\' & $FileDataList[$i]) $hFile = FileOpen($FolderSel & '\' & $FileDataList[$i], $FO_BINARY) $iOffset = 0 Do FileSetPos($hFile, $iOffset, $FILE_BEGIN) TCPSend($Socket, FileRead($hFile, $i4KiB)) If @error Then $iError = @error MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "Client:" & @CRLF & "Could not send the data, Error code: " & $iError) TCPCloseSocket($Socket) Return False EndIf $iOffset += $i4KiB ConsoleWrite($iOffset & ' > ' & $iFileSize & @CRLF) Sleep(30) Until $iOffset >= $iFileSize FileClose($hFile) TCPSend($Socket, @CRLF & "{EOF}") TCPCloseSocket($Socket) Sleep(1500) Next Quit() EndFunc ;==>UpdateDir ;============================================================================= Func Receive() While 1 Do $Socket = TCPAccept($UpdateDir_MainSocket) Sleep(100) Until $Socket <> -1 ConsoleWrite('Connected: ' & $Socket & @CRLF) Sleep(500) $File = TCPRecv($Socket, $i4KiB, 1) ConsoleWrite('TCPRecv: '&BinaryToString($File) &@CRLF& @CRLF) $Split = StringSplit(BinaryToString($File), '', 1) $File = $Split[1] $SecSplit = StringToBinary($Split[2]) ;ConsoleWrite('Recv File: ' & $File & @CRLF& @CRLF) Sleep(500) ;============================================================================= Local $bEOF = Binary(@CRLF & "{EOF}") Local $iEOFLen = BinaryLen($bEOF) Local $bData = $SecSplit&Binary("") Local $iDataLen = 0 Local $bEOFReached = False Do $bData &= TCPRecv($Socket, $i4KiB, 1) If @error Then $iError = @error MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "Server:" & @CRLF & "Connection lost, Error code: " & $iError) Exit Return False EndIf $iDataLen = BinaryLen($bData) ConsoleWrite($bData &@CRLF) If $iDataLen = 0 Then ContinueLoop If BinaryMid($bData, 1 + $iDataLen - $iEOFLen, $iEOFLen) = $bEOF Then $bData = BinaryMid($bData, 1, $iDataLen - $iEOFLen) $bEOFReached = True EndIf Sleep(30) Until $bEOFReached ;============================================================================= $FO = FileOpen('1.txt', 26) FileWrite($FO, $bData);"0x" & FileClose($FO) ;============================================================================= DirCreate(@ScriptDir&'\Downloaded\') $FO = FileOpen('Downloaded\' & $File, 26) FileWrite($FO, $bData) FileClose($FO) TCPCloseSocket($Socket) $bData = '' $iDataLen = 0 Sleep(500) WEnd EndFunc ;==>UpdateDir ;============================================================================= Func Quit() TCPShutdown() Exit EndFunc ;=============================================================================