我正在用Lua编写一个FTP客户端,由于一些限制,我只能使用套接字连接到FTP服务器(我不能使用任何特定的库)。当文件完全发送后,我的程序关闭了数据套接字,但随后我在 FTP 服务器上收到错误消息:
[ERROR] recv: connection reset by peer; [ERROR] shutdown: Socket is not connected
。我应该如何在不在服务器上引发错误的情况下完成文件传输?
这是我在 Lua 上使用的代码:
function sendData(data)
if data_skt == nil then
error("An error occurred during data sending.")
end
return Socket.send(data_skt, data)
end
function closeDataSocket()
Socket.close(data_skt)
data_skt = nil
end
(...)
consoleWrite("Transfering " .. filename .. "...\n")
input = io.open(client_dir..filename,FREAD)
local filesize = io.size(input)
local i = 0
while i < filesize do
packet_size = math.min(524288,filesize-i)
i = i + sendData(io.read(input,i,packet_size))
end
closeDataSocket()
io.close(input)
recvResponse()
recvResponse()
enterPassiveMode()
listServerDirectory()