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

Prolog Discussion :

liaison (Client Prolog) -> (Serveur Ada).


Sujet :

Prolog

  1. #1
    Membre du Club
    liaison (Client Prolog) -> (Serveur Ada).
    Bonjour

    J'ai copié le code du client socket du jeu réseau mastermind.

    J'essaie de le connecter à un serveur Ada.

    J'obtiens Socket Error : Connection refused.


    Mon code avec Prolog :

    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
       % connexion au serveur
        tcp_socket(Socket),
        Host='localhost', Port=5787,
        writeln("Connect..."),
        tcp_connect(Socket, Host<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />ort),
        writeln(" done"),
        writeln("open socket..."),
        tcp_open_socket(Socket, ReadFd, WriteFd),
        writeln(" done"),
        % envoi des données
        format(WriteFd, '~s~n', Input),        
        flush_output(WriteFd),
     
        % récupétation des résultats
        read_line_to_codes(ReadFd, Sentence),
        close(ReadFd),
        close(WriteFd),

    Donc j'ai bien le message Connect.... mais pas le done correspondant et une erreur.

    Je voudrais savoir si ce code est correcte/suffisant ?
    Au quel cas j'yrais en section Ada.

    S'il vous plait !

    Merci !
    Logique sans matière est matière de logique.

  2. #2
    Membre du Club
    j'ai écrit un petit serveur Prolog et le code fonctionne, donc.
    Ce code fonctionne, je pense, en tout cas la connection par socket est établie.

    Je vais demander un coup de main avec Ada.

    Merci désolé du sujet supplémentaire.

    Ollala, je n'avais initialisé mon serveur. la pagaille pour un petit "Server.Init".

    Merci encore pour votre patience.
    Logique sans matière est matière de logique.

  3. #3
    Membre du Club
    problème d'envoie ou de reception de chaîne.
    Si vous passer par là est avaez du temps à perdre ou à gagner selon.
    Je ne parviens pas à communiquer une chaîne de charactère avec Prolog à Ada.

    j'ai essayé beaucoup de chose seans y parvenir.

    Si vous souhaitez jeter un coup d'oeil à mes codes :

    Je passe bien une chaine apparemment mais vide sensiblement en arriavnt côté Ada.

    Re voilà mon code prolog du prédicat pnl :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    pnl :-
        read_string(user_input, "!?.", """\n", End, P),
     
        % connexion au serveur                                                      
     
        tcp_socket(Socket),
     
        Host='localhost', Port=8001,
     
        writeln("Connect..."),
     
        tcp_connect(Socket, Host<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />ort),
     
        writeln(" done"),
        writeln("open socket..."),
     
        tcp_open_socket(Socket, ReadFd, WriteFd),
     
        writeln(" done"),
        writeln("% envoi des données"),
        writeln(P),
     
        string(P),
     
        format(WriteFd, '~s', [P]),
     
        flush_output(WriteFd),
    /* la chaîne en arrivant est vide.
        close(WriteFd),
     
        writeln("% récupétation des résultats"),
    /* le programme s'arrête ici */ Peut-être normal.
        read_line_to_codes(ReadFd, L),
     
        writeln("% close"),
     
        close(ReadFd),
     
        writeln("% liste_to_codes"),
     
        string_codes(S, L),
     
        writeln("input_to_list"),
     
        input_to_list(S, List, Sentence),
     
        writeln("and others"),
        length(List, Length),
        nth1(Length, List, At_End),
        char_code(At_End, End),
        pnl_dialog(List, Sentence, End),
        pnl.


    Merci pour vos lumières.
    Logique sans matière est matière de logique.

  4. #4
    Membre du Club
    passage d'un entier par socket (Client Prolog) -> (Server Ada)
    Bonjour,
    J'ai l'espoir d'y parvenir.
    En effet je viens de passer une chaîne de 5 caractères.
    Mais je connaissais la longueur de la chaîne avant.
    Donc j'essaie de passer la longueur de la chaine à présent.

    mon format est à l'instant le suivant :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     string(P),
        string_codes(P, P_Codes),
        length(P_Codes, P_Length),
        writeln(P_Length),
        format(WriteFd, '~d', P_Length),


    Mais j'ai 21 côté Prolog, et 1869507428 précisément côté Ada.
    Logique sans matière est matière de logique.