Я пишу приложение, использующее Lua Socket lib. Вот простой фрагмент кода, который описывает мою проблему.
local com=require("socket");
local socket=com.tcp();
local hello="hi stack overflow";
local myIP="192.168.1.1";
local myPort = 2000;
local err = nil;
-- Main
while 1
if(~err) then
err = socket:send(hello);
else
if(socket:connect("myIP", myPort))) then
err = 1;
end -- second if
end -- first if
waitfor(10); -- wait for 10 sec.
do
(я на самом деле не запускал этот конкретный код, но он идентичен работающему коду в моей проблеме).
Когда я вижу, что если сокет закрыт, этот код не может открыть его снова. Я бы догадался, как только мы возьмем главный объект TCP, который мы можем открывать и закрывать по своему усмотрению.
Я могу заставить этот код работать, повторяя вызов socket.tcp (), однако я подозреваю, что предыдущий объект остается где-то в памяти, и я хочу избежать этого.