users-prolog
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Prolog sockets


From: J-O Janson (www.lightmotion.se)
Subject: Prolog sockets
Date: Mon, 30 Jun 2014 23:21:32 GMT
User-agent: One.com webmail 6.3.0

Hi,

I'm working with a GNU Prolog socket problem.  I saw this mailing-list when I searched the web for solutions.

I try to create a Prolog code that works in lke this Java code:
http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com/javase/tutorial/networking/sockets/examples/EchoClient.java

I try to make a client that listen for user inputs and writes the user input to the socket. The server echo the data from the socket back to the socket and to the client, that output the data on the screen.

Here is my code:

% The Client
client_init :-
         socket('AF_INET',Socket),
         socket_connect(Socket,'AF_INET'(localhost,7002),SI,SO),
         add_stream_alias(SO, out),
         add_stream_alias(SI, in),
         set_stream_buffering(out, line).
 
client_send:-        
        repeat,
       read(T),    % user input      
        (   B \== end_of_file ->
            (
             format(out, '~q~n',[T]),write(out),        % send over socket
              read_term(in,B,[end_of_term(eof)]),   % read the result
             write(B), nl,    % write on screen
             nl,
             fail  ) ;  !),
            close(out),
           close(in).





% The Server
 server :-
         socket('AF_INET', Sock),
         socket_bind(Sock, 'AF_INET'(localhost, 7002)),
         socket_listen(Sock, 4),
         socket_accept(Sock, C, SI, SO),
         format('accepting a connection from client: ~a~n', [C]),
         repeat,
         read(SI, T),
         (   T \== end_of_file ->
             write(T), nl,
             write(SO,T),
             nl,
             fail ;  !),  
         close(SI),
         socket_close(Sock).





Best Regards  Jan-Olof Janson

________________________________________________________________________________
www.lightmotion.se


reply via email to

[Prev in Thread] Current Thread [Next in Thread]