I
Size: a a a
I
S
local socket = require'socket'Чот такое, тоже побырому накидал. Асинхронное и с кучей клиентов.
local proxy = {host = "other.com", port = 54321}
local tcp = socket.tcp()
tcp:settimeout(0)
tcp:setsockname("*", 12345)
tcp:listen()
local clients = {}
while true do
-- принимаем клиентуру
local sock = tcp:accept()
while sock do
sock:settimeout(0)
local conn = socket.connect(proxy.host, proxy.port)
conn:settimeout(0)
-- [кей][валуй] как [клиент][коннекшн до сервера]
self.clients[sock] = conn
sock = tcp:accept()
end
-- смотрим кому что пришло
-- все логи можно катать тут
for sock, other in pairs(clients) do
local data, sstatus, partial = sock:receive("*a")
data = data or partial
other:send(data)
local data, ostatus, partial = other:receive("*a")
data = data or partial
sock:send(data)
-- если кто-то порвал соединение - завершаемся
if sstatus == 'closed' or ostatus == 'closed' then
sock:close()
other:close()
clients[sock] = nil
end
end
socket.sleep(0.01)
end
S
S
S
S
S
S
S