我正在尝试在wxLua上使用wxFTP上传多个文件。它适用于第一个文件,但我不明白为什么我不能发送第二个文件。这是一个失败的示例:
local ftp = wx.wxFTP()
local ftpAddress = wx.wxIPV4address()
ftpAddress:Service( "ftp" )
ftpAddress:Hostname( "ftp.example.com" )
ftp:Connect( ftpAddress )
local out1 = ftp:GetOutputStream( "foo" )
out1:Close()
local out2 = ftp:GetOutputStream( "bar" )
out2:Close() -- here out2 is nil
答案 0 :(得分:1)
不是在输出流上调用Close,而是将变量设置为nil,让垃圾收集器处理它。 wxOutputStream实际上是一个指向wxFTPOutputStream的指针,它继承自wxSocketOuputStream。 Close方法不执行任何操作 - 它总是返回true - 并且必须销毁流(即调用析构函数)才能关闭套接字。
试试这个:
local ftp = wx.wxFTP()
local ftpAddress = wx.wxIPV4address()
ftpAddress:Service( "ftp" )
ftpAddress:Hostname( "ftp.example.com" )
ftp:Connect( ftpAddress )
local out1 = ftp:GetOutputStream( "foo" )
out1 = nil
collectgarbage("collect") -- force full garbage collection
local out2 = ftp:GetOutputStream( "bar" )
out2 = nil
collectgarbage("collect")