2008-12-22 11 views
2

J'essaie d'utiliser wxFTP sur wxLua pour télécharger plusieurs fichiers. Cela fonctionne avec le 1er fichier, mais je ne comprends pas pourquoi je ne peux pas envoyer un 2ème fichier. Voici un exemple qui échoue:wxLua: télécharger des fichiers avec 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 

Répondre

1

Au lieu d'appeler Fermer sur le flux de sortie Affecte la variable à zéro et laisser le garbage collector gérer. wxOutputStream est en fait un pointeur vers un wxFTPOutputStream qui hérite de wxSocketOuputStream. La méthode Close ne fait rien - elle renvoie toujours vrai - et le flux doit être détruit (c'est-à-dire le destructeur appelé) pour fermer le socket.

Essayez ceci:

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") 
+0

Eh bien, en fait, j'ai essayé cela, et il échoue encore. – Jazz

Questions connexes