blob: eaf7b716410ecb3e049f88b9d6abdd7620826090 [file] [log] [blame]
local socket = require "socket"
local posix = require "posix"
local M, reply_size, request_size = 100, 4096, 64
local N = tonumber(arg and arg[1]) or 1
local function client(sk)
local repsize = reply_size
local request = string.rep(" ", request_size)
local replies = 0
for i=1,N*M do
sk:send(request)
sk:receive(repsize)
replies = replies + 1
end
io.write("replies: ", replies, "\tbytes: ", sk:getstats(), "\n")
io.flush()
sk:close()
end
local function server(sk)
local reqsize = request_size
local reply = string.rep(" ", reply_size)
for i=1,N*M do
sk:receive(reqsize)
sk:send(reply)
end
sk:close()
end
local ls = socket.bind("127.0.0.1", 0)
if posix.fork() == 0 then -- Child is client
client(socket.connect(ls:getsockname()))
os.exit()
else -- Parent is server
server(ls:accept())
ls:close()
posix.wait()
end