| |
Accueil CanalOpenSource
SourceServer
Langage xShell
BasicBrick
tcp OpenClient
tcp_OpenServer
DesignServer
openSource Shop Gallery
Main Street
freeway Avenue
Liens :
ifs_GettingStarted OffreFormationxShell OpenSyncPresentation ssf_Mail-13122002 tcp_GettingStarted tcp_Samples tcp_ServerGettingStarted xShell2003Novembre2003
|
|
| Retour
tcp OpenClient - Prise en main| A propos de tcp OpenClient |
| Cette librairie permet d'établir une communication avec une base 4D dans laquelle est inclus la librairie tcp OpenServer. |
| tcp OpenClient met à votre disposition plusieurs méthodes qui ont pour but de manipuler les données de la base distante et de piloter le serveur. |
| Description de la librairie |
| La base tcp_OpenClient contient 3 groupes Insider qui constituent la librairie à intégrer à une application 4D pour profiter des fonctions de communication. |
| Le groupe tcpOpenClient regroupe toutes les méthodes propres à la partie cliente de ce module. |
| Le groupe tcpOpenShared contient toutes les méthodes partagées par tcp OpenServer et tcp OpenClient. |
| Ce groupe contient aussi deux formulaires d'interface, tcp_log qui permet d'afficher le log de communication et de l'enregistrer sur disque si on le désire, et tcp_Ping qui affiche une fenêtre avec une fonction pour tester si la base serveur distante répond. |
| Le groupe Include apporte les méthodes nécessaires et complémentaires issues d'autres librairies de xShell. |
| Parmétrages et initialisation |
| La base est fournie avec un dossier properties qui contient le fichier tcpPrp.txt. Ce fichier renferme plusieurs paramètres. Ce fichier est commun au serveur et au client tcp Open. Voici les paramètres qui concerne le client : |
| Dans la section [Server1] |
| logName=Server1Log.txt | Indique le nom du fichier de log dans lequel sont enregistrées les erreurs d'execution |
| Call=15000 | Indique le port de communication |
| IP=127.0.0.1 | Indique l'adresse ou le nom de domaine du serveur |
| La méthode tcp_OnStartUpBase est à placer au démarrage de l'application. Quant à la méthode tcp_OnStartUpProcess, c'est à l'initialisation d'un process qu'elle doit être appelée. Elle va charger les paramètres contenu dans le fichier tcpPrp.txt, en particulier l'adresse IP du serveur à joindre et le numéro de port sur lequel il faut communiquer. Cette adresse IP est celle donnée par défaut, il est possible de la changer en appelant la méthode tcp_SetIpAddress. |
| Ouverture d'une connexion |
| Etablir une connexion avec le serveur se fait en appelant la méthode tcp_OpenConnection. Si vous l'appelez sans lui passer de paramètre, tcp_OpenConnection utilise l'adresse IP fixée dans le fichier tcpPrp.txt. Si vous désirez préciser l'adresse du serveur, vous pouvez la préciser en premier paramètre. tcp_OpenConnection renvoie 0 si la connexion est établie et -1 en cas d'échec. |
| Dans l'exemple suivant, l'adresse et le port de communication sont précisés: |
| `suite de la communication |
| ALERTE("Impossible de joindre le serveur") |
| Après avoir ouvert votre communication avec le serveur, vous pouvez commencer à envoyer et recevoir des données. Il faut terminer votre connexion en appelant la méthode tcp_CloseConnection qui ne prend pas de paramètre et ne renvoie pas de code d'erreur. |
| A moins que vous le précisiez, le serveur ne conserve pas de liaison avec le client après avoir traité la requête et renvoyé un code d'erreur. Nous sommes dans le même mode que lors d'une communication avec le serveur http. C'est-à-dire que le process qui traite la requête sur le serveur ne garde pas de liaison avec le client. Sur le serveur, le process reçoit la requête, la traite, renvoie un code d'erreur et coupe la communication. Voici une séquence de code illustrant ce propos : |
| Il existe un moyen de maintenir la connexion entre le process client et le process serveur à l'aide des binds. |
| Ouverture d'un bind, persistance de la connexion et du contexte sur le serveur |
| Créer une connexion avec un process sur le serveur et maintenir cette connexion vous permet de manipuler les enregistrements sur le serveur et de conserver les selections et enregistrements courants. Plusieurs méthodes de tcp OpenClient ne fonctionnent que dans ce contexte là. |
| Pour créer un bind, il suffit d'appeler la méthode tcp_CreateBind . Cette méthode va établir la connexion avec le serveur qui va dédier un process pour répondre aux requêtes. Ce process serveur ne coupera pas la communication après le traitement de la requête et il est donc possible de poursuivre la communication au sein du même contexte. |
| La méthode tcp_CreateBind peut recevoir en paramètre l'adresse IP ou le nom de domaine du serveur. Si ce paramètre est omis, c'est l'adresse précisée dans tcpPrp.txt. tcp_CreateBind renvoie 0 si la connexion est établie. Il ne faut pas appeler tcp_OpenConnection avant ou après, tcp_CreateBind se charge de le faire. |
| Toutes les requêtes envoyées par le client sont traitées par le même process sur le serveur. Comme il n'y a pas d'ouverture et de fermeture de connexion à chaque requête, le temps de traitement est beaucoup plus rapide. |
| Lorsque vous avez fini votre communication, vous fermer votre communication et détruisez votre bind avec la méthode tcp_DeleteBind. Elle ne prend pas de paramètre et renvoie 0 si l'opération s'est correctement déroulée. |
| Il est parfois nécessaire de tester si on a déjà établi une connexion et un bind avec le serveur, vous pouvez faire ce test avec la méthode tcp_IsBindOn qui renvoie Vrai si un bind est déjà établi. |
| Un process client ne peut pas ouvrir simultanément deux binds. Chaque bind doit être fermé avant l'ouverture d'un autre bind. |
| Le process serveur est en attente permanente de requêtes de la part de votre client. Après un time out, la communication sera fermée si le serveur ne reçoit aucune information. Pour éviter de perdre votre communication lorsque vous n'avez pas d'information à envoyer sur le serveur, vous pouvez endormir votre bind pour un temps donné. Pour cela, vous utilisez la méthode tcp_SleepOnBind . |
| Pour réactiver votre bind et reprendre votre communication avec le process serveur, appelez la méthode tcp_WakeUpBind. |
| Haut de page | Retour
|