wxLua:使用wxFtp上传文件

时间:2008-12-22 15:38:54

标签: lua wxwidgets

我正在尝试在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

1 个答案:

答案 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")