IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Socket - socketlit ne se lance 'pas' ? [WD18]


Sujet :

WinDev

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut Socket - socketlit ne se lance 'pas' ?
    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

    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
    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 !)


    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"

    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
    Dans l'aide il est mit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ThreadExécute(Canal, threadNormal, ProcédureGestion,Canal)
    Deux fois 'Canal' ... je ne comprends pas ?


    Je ne sais quoi mettre dans la procédure "ProcédureGestion"

    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+"%")
    Par traçage, je sais que j'ai une valeur 'canal'.

    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

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    Trouvé :

    Il y a une grande différence entre SocketMarqueurFin et SocketMarqueurFinBuffer...

    Il me fallait le Buffer avec le bon Marqueur !

    Quand on lis l'aide effectivement Socketlit plante quand ce n'est pas bon...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bootloader qui ne lance pas le Kernel
    Par Jb59 dans le forum Programmation d'OS
    Réponses: 2
    Dernier message: 01/08/2005, 22h29
  2. mmc.exe qui ne se lance pas
    Par r0d dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 27/04/2005, 17h11
  3. [Kylix] Ne se lance pas sous Fedora core 3
    Par John@EuroDevz dans le forum EDI
    Réponses: 3
    Dernier message: 14/02/2005, 16h27
  4. Mysql ne se lance pas problème de socket
    Par Riko dans le forum Installation
    Réponses: 5
    Dernier message: 05/02/2004, 09h28
  5. Envoi d'un mail en VBA: outlook ne se lance pas
    Par Hannibal dans le forum VBA Access
    Réponses: 4
    Dernier message: 01/06/2003, 15h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo