wxLua:使用wxFtp上传文件

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

原文链接 https://stackoverflow.com/questions/386546

点赞
stackoverflow用户1491
stackoverflow用户1491

在输出流上不要调用Close方法,将变量设置为nil并让垃圾回收器处理它。wxOutputStream实际上是一个指向继承自wxSocketOuputStream的wxFTPOutputStream的指针。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")  -- 强制进行完全垃圾回收
local out2 = ftp:GetOutputStream( "bar" )
out2 = nil
collectgarbage("collect")
2008-12-23 17:12:01