Copyright ® (1997-2005) EDMGROUP Pty Ltd - EZY Prolog Reference

main page

EZY Socket Server

EZY Prolog provides simple way of creating server applications.

Use server_socket_start and socket_server_stop to create and destroy socket server.

Each socket server has association with WINDOW, which is passed as parameter for message handler.

Programmer defines clause, which will receive messages for created Winsock server. Socket event handler also receives the value of the WINDOW, associated with socket server. This provides convenient conditions for writing GUI applications.

Client can request remote execution of the program on server. Server messages handler can allow or reject remote execution.

Socket server messages handler can return values when processing socket messages.

Sample application:


 

% below is sample how to program server event handler

my_server_callback( WINDOW , _ , client_finished , _ ):-

! ,

display_message( WINDOW , "Client Finished - stop message loop\n" ),

fail .

my_server_callback( WINDOW , _ ,socket_closed( SOCKET , REASON ), _ ):-

! ,

format ( MSG , "Connection on socket(%) closed. %\n" , SOCKET , REASON ),

display_message( WINDOW , MSG ),

! .

my_server_callback( WINDOW , _ ,socket_connect( SOCKET , _ , CLIENT ), SERVER_REPLY ):-

format ( DATA_TO_DISPLAY , "Connection established. client ( % ) on socket (%)\n" , CLIENT , SOCKET ),

display_message( WINDOW , DATA_TO_DISPLAY ),

SERVER_REPLY = server_finished ,

! .

my_server_callback( WINDOW , SOCKET ,client_request( RQ ), SERVER_REPLY ):-

format ( DATA_TO_DISPLAY , "socket(%) - %\n" , SOCKET , RQ ),

display_message( WINDOW , DATA_TO_DISPLAY ),

format ( REPLY , "server reply: %" , RQ ),

SERVER_REPLY =server_reply( REPLY ),

! .

my_server_callback( WINDOW , SOCKET , REQUEST , server_finished ):-

write ( "my_server_callback(" , WINDOW , "," , SOCKET , "," , REQUEST , ")\n" ).

 

For more information - please load and run ezy_socket_server.pro sample.

 

Copyright © 1997-2003 EDMGROUP (Australia)

Last Updated:

August 14, 2002