Ticket #2513: server.au3

File server.au3, 3.0 KB (added by FireFox, on Mar 8, 2014 at 6:11:37 PM)
Line 
1; I am the server, start me first!
2
3#include <MsgBoxConstants.au3>
4#include <FileConstants.au3>
5
6Example()
7
8Func Example()
9 TCPStartup()
10
11 OnAutoItExitRegister("OnAutoItExit")
12
13 Local $iError = 0
14
15 Local $sIPAddress = "127.0.0.1"
16 Local $iPort = 65432
17
18 Local $iListenSocket = TCPListen($sIPAddress, $iPort, 100)
19
20 If @error Then
21 $iError = @error
22 MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "Server:" & @CRLF & "Could not listen, Error code: " & $iError)
23 Return False
24 EndIf
25
26 Local $iSocket = 0
27
28 Do
29 $iSocket = TCPAccept($iListenSocket)
30
31 If @error Then
32 $iError = @error
33 MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "Server:" & @CRLF & "Could not accept the incoming connection, Error code: " & $iError)
34 Return False
35 EndIf
36 Until $iSocket <> -1
37
38 TCPCloseSocket($iListenSocket)
39
40 Local $iFileSize = 0, $hFile = 0, $iOffset = 0, $bData = ""
41 Local Const $i4KiB = 4096
42
43 #region Added
44 Local $aFilePath[3] = ["test1.txt", "test2.txt", "test3.txt"]
45
46 For $i = 0 To UBound($aFilePath) - 1
47 #endregion Added
48 $iFileSize = FileGetSize($aFilePath[$i])
49
50 $hFile = FileOpen($aFilePath[$i], $FO_BINARY)
51
52 Do
53 FileSetPos($hFile, $iOffset, $FILE_BEGIN)
54
55 TCPSend($iSocket, FileRead($hFile, $i4KiB))
56
57 If @error Then
58 $iError = @error
59 TCPCloseSocket($iSocket)
60 MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "Server:" & @CRLF & "Could not send the data, Error code: " & $iError)
61 Return False
62 EndIf
63
64 $iOffset += $i4KiB
65 Until $iOffset >= $iFileSize
66
67 FileClose($hFile)
68
69 TCPSend($iSocket, @CRLF & "{EOF}")
70FileWriteLine("toto.txt", "[" & @MIN & ":" & @MSEC & "]serv: send EOF")
71
72;~ MsgBox($MB_SYSTEMMODAL, "", "Server:" & @CRLF & "File sent.")
73
74 #region Added
75 Do
76 $bData = TCPRecv($iSocket, 9, 1) ; 9 = Length of: @CRLF{EOFOK}
77 If @error Then
78 $iError = @error
79FileWriteLine("toto.txt", "[" & @MIN & ":" & @MSEC & "]serv: error")
80 MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "Server:" & @CRLF & "Connection lost, Error code: " & $iError)
81 Return False
82 EndIf
83
84 If BinaryLen($bData) = 0 Then
85 Sleep(10) ; Avoid High CPU usage.
86 ContinueLoop
87 EndIf
88 Until BinaryToString($bData) = @CRLF & "{EOFOK}"
89FileWriteLine("toto.txt", "[" & @MIN & ":" & @MSEC & "]serv: recv EOFOK")
90
91 ; Reset variables that needs to be reseted.
92 $iOffset = 0
93 Next
94
95 TCPSend($iSocket, @CRLF & "{EOT}") ; EOT stands for End Of Transfer (this is a code, choose what you want).
96 #endregion Added
97
98 TCPCloseSocket($iSocket)
99EndFunc ;==>Example
100
101Func OnAutoItExit()
102 TCPShutdown()
103EndFunc ;==>OnAutoItExit