summaryrefslogtreecommitdiff
path: root/tests/modules/socket/tcp/file_client.lua
blob: 33fde9d0977e0cb0438e5d365d25c0eed1aecaa4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import("core.base.socket")
import("core.base.bytes")

function main()
    local addr = "127.0.0.1"
    local port = 9090
    print("connect %s:%d ..", addr, port)
    local sock = socket.connect(addr, port)
    print("%s: connected!", sock)
    local real = 0
    local recv = 0
    local data = nil
    local wait = false
    local results = {}
    while true do
        real, data = sock:recv(8192)
        if real > 0 then
            recv = recv + real
            wait = false
            table.insert(results, data)
        elseif real == 0 and not wait then
            if sock:wait(socket.EV_RECV, -1) == socket.EV_RECV then
                wait = true
            else
                break
            end
        else
            break
        end
    end
    if #results > 0 then
        data = bytes(results)
    end
    print("%s: recv ok, size: %d, #data: %d!", sock, recv, data and data:size() or 0)
    sock:close()
end