J'aurais aussi tendance à proposer un thread, mais ce thread serait à l'écoute d'une connexion UDP, ca éviterait les pull toutes les x secondes sur la base de données.
Exemple de code :
Parti réception :
1 2 3 4 5 6 7 8 9
| PROCEDURE Ecoute_socket()
SocketCréeUDP("reception", 12345, "192.168.0.11")
TANTQUE SocketExiste("reception")=Vrai
sMsg est une chaîne = SocketLit("reception", Vrai)
SI sMsg <> "" ALORS
ListeAjoute(liste_messages, HeureVersChaîne(Maintenant()) + " " + sMsg)
FIN
FIN |
à lancer dans un thread
1 2
|
ThreadExécute("communucation", threadNormal, "Ecoute_socket") |
ne pas oublier de terminer le thread en fin de programme.
ThreadArrête("communucation")
Pour envoyer un message :
1 2 3 4
| Socket.Option = SocketOptimiseConnexionIP
SocketCréeUDP("envoi", 12346, "192.168.0.11")
SocketEcrit("envoi", msg, "192.168.0.255", 12345)
SocketFerme("envoi") |
"192.168.0.11" étant l'adresse ip de la machine ou tourne l'exécutable (voir NetAdresseIP) et faire attention si l'on plusieurs cartes réseaux.
"192.168.0.255" étant l'adresse de broadcast dépendante du masque de sous réseau ("192.168.0.255" c'est pour un masque "255.255.255.0")
Ce genre de message de broadcast fonctionne bien sur un réseau local, mais habituellement ne passe pas à travers les routeurs.
12345 et 12346 étant 2 ports choisis aléatoirement, le tout étant de prendre 2 ports non habituellement utilisés par des applications classiques (pas le 80 (HTTP), le 21 (FTP), etc...)
Partager