Bonjour à tous,
Pour ceux qui ont commencé à jouer avec la HC3, j'ai une petite question :
J'ai un QA qui envoie des trames sur une socket TCP vers un serveur.
ça marche avec ce code (je vois mes trames arriver sur le serveur) :
function QuickApp:onInit()
self:debug("onInit")
self:Open_Socket()
end
function QuickApp:Open_Socket()
self.ip = self:getVariable("IP")
self.port = tonumber(self:getVariable("Port"))
self.sock = net.TCPSocket()
self.sock:connect(self.ip, self.port)
end
function QuickApp:Send(MaTrame)
--affiche la trame dans le label
self:updateView("LBL_Buffer", "text", tostring(MaTrame))
--envoi la trame
self.sock:write(MaTrame, {
success = function() self:debug("data sent") end,
error = function(err)
self:debug("error while sending data")
self.sock:close()
fibaro.sleep(200)
self:Open_Socket()
fibaro.sleep(200)
self:Send(MaTrame)
end
})
end
Donc en gros,
J'ouvre la socket au démarrage du QA, et j'envoi la trame sur appel de la méthode Send(MaTrame)
Actuellement je passe par un bouton dans le QA pour déclencher l'envoi, plus tard ce sera fait par scène, bref... le problème est pas là.
Le soucis est que si le serveur TCP redémarre, je n'arrive plus à relancer la connexion depuis le QA !
malgré ces lignes :
self.sock:close()
fibaro.sleep(200)
self:Open_Socket()
fibaro.sleep(200)
self:Send(MaTrame)
où je ferme la précédente socket, je la ré-ouvre, et je renvoi la trame (le tout temporisé) !
Et bien au premier essai, après redémarrage du serveur TCP, il me répond que la trame a bien été envoyé. Et biensûr j'ai rien vu arriver sur le serveur.
Au deuxième essai il boucle indéfiniment en me disant "error while sending data".
Comment peut-on réinitialiser la socket proprement, et relancer la trame qui n'a pas pu être envoyée !!
des idées ????
merciiiiiiiiiiiiii !