Bonjour,
Normalement, chez d’autres clients ou je dois lire ‘des’ données HL7 via socket, jusqu’à présent j’ai su me contenter de simplement faire un
Ce qui veut donc dire que l’adresse IP et le port sont donnés à la connexion et que le service qui me renvoie un message, le fait sans problème (sur la même IP ? – en tout cas ça fonctionne !)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SocketConnecte("Socket",socketportnr,socketipnr) Socket.Option = SocketOptimiseConnexionIP SocketChangeModeTransmission("Socket",SocketSansMarqueurFin) SocketEcrit("Socket",”message HL7”) BOUCLE ADTRESP = SocketLit("Socket",Vrai) SI ExtraitChaîne((ExtraitChaîne(ADTRESP,2,Caract(13),DepuisDébut)),3,"|",DepuisDébut) = SAI_main_patnummer..ValeurAffichée+ADTdate ET Droite(ADTRESP,1)=Caract(13) ALORS SORTIR FIN
Hors, maintenant, un autre client, me demande d’envoyer un message sur une adresse ip/port et que je réceptionne la réponse sur une autre adresse ip/port ? (car il ne maîtrise pas le cas de figure décrit plus haut càd une définition d'ip/port par l'envoie et la réception ?)
Donc, j’arrive à envoyer mon message, à l’identique comme ci-dessus.
Mais j’ai des problèmes pour la réception :
Plusieurs questions :
- est-ce que je m'y prends bien ?
- faut-il absolument un SocketAttendConnexion et socketAccepte ?
- c'est quoi exactement cette valeur Canal est-ce une 'alternative' à ma connexion "test" ?
- dans quel ordre placer mes codes ?
- je n’arrive pas à faire un socketlit ?
- comment sortir de la boucle et quand ?
Voici les codes dans l'odre actuel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SI SocketCrée("test",2501,"10.15.1.198") = Faux ALORS Erreur("erreur création " + ErreurInfo(errMessage)) SI SocketExiste("test") ALORS SocketFerme("test") GOTO finalklina FIN ThreadExécute("Thread1", threadNormal, ProcédureAttente)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 socketportnr = INILit("connections", "SocketPort", "", INIRoot+"connections.ini") socketipnr = INILit("connections", "SocketIP", "", INIRoot+"connections.ini") SI PAS SocketConnecte("Socket",socketportnr,socketipnr) ALORS Erreur("No Socket connection:" + ErreurInfo(errComplet)) GOTO finalklina FIN Socket.Option = SocketOptimiseConnexionIP ADTdate = strFileDATE+Gauche(HeureSys(),6) ADT = Caract(11 +"MSH|^~\&|ANXe|ANXe|ANXeListener|AZKlina|"+ADTdate+"||QRY^A19|"+SAI_main_patnummer..ValeurAffichée+ADTdate+"|P|2.2|||AL|NE||"+Caract(13)+ "QRD|"+ADTdate+"|R|I|"+SAI_main_patnummer..ValeurAffichée+ADTdate+"|||1^RD|"+SAI_main_patnummer..ValeurAffichée+"|APA|||"+Caract(28)+Caract(13) SocketChangeModeTransmission("Socket",SocketSansMarqueurFin) SI PAS SocketEcrit("Socket",ADT)ALORS Erreur("No Socket sending:" + ErreurInfo(errComplet)) GOTO finalklina FIN
Pour la procédure "ProcédureAttente"
Dans l'aide il est mit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 PROCEDURE ProcédureAttente() BOUCLE SI SocketAttendConnexion("test") ALORS Canal est une chaîne Canal = SocketAccepte("test") ThreadExécute("Canaltest", threadNormal, ProcédureGestion,Canal) FIN FIN
Deux fois 'Canal' ... je ne comprends pas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part ThreadExécute(Canal, threadNormal, ProcédureGestion,Canal)
Je ne sais quoi mettre dans la procédure "ProcédureGestion"
Par traçage, je sais que j'ai une valeur 'canal'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 PROCEDURE ProcédureGestion(canal) Trace("proceduregestion") test1 est une chaîne = SocketLit(canal) test2 est une chaîne = SocketLit("test") Trace(test1+"_") Trace(test2+"%")
Coté application de mon client ; il réceptionne bien mon message et envoi une réponse postive, car il arrive a se connecter sur mon serveur socket "test"
J'arrive au traçage "proceduregestion"...
Mais les deux traces test1 et test2 restent vide ???
En fait c'est comme si elle ne s'exécutaient pas ? Car ni l’un ni l’autre se voix sur la trace avec l’élément de vérification « _ » ou « % » ??
Je suis perdu ! Merci pour votre aide. A bientôt
Partager