J'ai une application client qui devrait envoyer des messages de notification à une application serveur facultative. Le client ne doit pas être influencé par le fait que l'application du serveur existe ou non. Il devrait essayer de se connecter à l'application du serveur et envoyer le message de notification et en cas d'erreurs, il devrait simplement ignorer silencieusement toutes les erreurs et continuer à travailler.Messages unidirectionnels robustes avec Indy
J'utilise Indy pour la communication TCP, mais toutes les tentatives pour éviter l'apparition de messages d'erreur (c'est-à-dire lorsque l'application du serveur se ferme lors de la connexion au client) ont échoué.
Existe-t-il un moyen de rendre ce système vraiment robuste?
code actuel ressemble à ceci:
if (not Client.Connected) then
begin
Client.Host := ServerName;
Client.Port := ServerPort;
Client.ConnectTimeout := ConnectTimeout;
try
Client.Connect;
except
Exit;
end;
end
try
Client.IOHandler.WriteLn ('NOTIFYCHANGE "' + Param + '"');
Client.IOHandler.WriteBufferFlush;
except
try
Client.Disconnect;
except
{ ignore errors while disconnecting }
end;
try
Client.Connect;
except
{ ignore errors while connecting }
end;
end;
Salut Rob, merci pour la réponse. Le message apparaît lorsque l'application n'est pas exécutée dans le débogueur. Je l'ai réparé en me connectant et en me déconnectant à chaque notification (ça n'arrive pas trop souvent). Il semble être assez robuste maintenant. – jpfollenius