У меня есть следующий код:
function Server:run()
print("Running.")
self.running = true
while self.running do
if self.client == nil then
self.client = self.socket:accept()
print("Client connected.")
self.client:settimeout(10)
end
local line, err = self.client:receive()
if err then
print("Error: " .. err)
elseif line == "quit" then
print("Quitting.")
self.client:close()
self.running = false
else
print("Received: " .. line)
end
end
self:terminate()
end
Я ожидаю, что при вызове self.client:receive() сервер будет ждать 10 секунд или пока не получит сообщение, а затем продолжит свой путь.
Однако это не то поведение, которое я испытываю. Вместо этого сервер мгновенно генерирует ошибку тайм-аута независимо от того, какое значение тайм-аута установлено, и вообще не ждет сообщения от клиента.
Подозреваю, что я что-то неправильно понял. Любое понимание будет оценено. Спасибо.
Полный код здесь:
Сервер: http://pastie.org/9659701
основной: http://pastie.org/9659703