Page 1 of 1

Package to build Servers & Clients

Posted: 28 Nov 2007 20:13
by Gildas Menier
This package is designed to help you build client and multi-client servers in Visual Prolog CE 7.

SCS (Simple Client Server) uses a native binding to a subset of winsock2 functions and does not use sockbind or mgslayer (at all).

It is designed with multithreading in mind : a server (instance of scsServer class) waits for incoming connections in a thread. A connection is managed by a callback predicate that you provide. An instance of scsClient can then be used to communicate with the client.

The sending of data is a blocking process, but the reception is performed by a listening thread that triggers another callback predicate, passing the data received as argument.

The design is very similar to a standard client/server scheme.

Two different modes are supported :

In the nibble_mode, the reception callback predicate is evaluated as soon as data is available. This doesn't mean you get the data that has been sent : you get pieces of data as soon as it arrives.

In the message_mode (default mode), SCS adds a data management system that only triggers the reception callback when the data reception is complete - this means that you do not have to take care of the rebuilding of complete data : SCS does it for you.

The 'transmitFile' function of winsock2 is supported. This means that you can even send files (see msdn for transmitFile in winsock2).

A tutorial can be found there :

http://www.arsaniit.com/vp_tools/scs.htm

You'll also find the documentation of the classes in a prodoc format (ie the Visual Prolog Help) at the same page.

The demo project shows how to build a time server (that sends the server's time to a client and closes the cnx) and a reverse server (that sends back reversed string until it receives the string 'end').

The demo project features a simple client featuring a console with sending/receving monitoring.

The download link : http://www.arsaniit.com/vp_tools/download/scs_17.zip


Best Regards

Gildas

Posted: 8 Jan 2008 22:37
by Thomas Linder Puls
This has been copied to the wiki: 3rd:SCS - Simple Client Server.