view tango/example/networking/socketserver.d @ 373:d1574e142e93 trunk

[svn r394] Fixed the new DtoNullValue function
author lindquist
date Tue, 15 Jul 2008 15:16:56 +0200
parents 1700239cab2e
children
line wrap: on
line source

/*******************************************************************************

        Shows how to create a basic socket server, and how to talk to
        it from a socket client. Note that both the server and client
        are entirely simplistic, and therefore this is for illustration
        purposes only. See HttpServer for something more robust.

*******************************************************************************/

private import  tango.core.Thread;

private import  tango.io.Console;

private import  tango.net.ServerSocket,
                tango.net.SocketConduit;

/*******************************************************************************

        Create a socket server, and have it respond to a request

*******************************************************************************/

void main()
{
        const int port = 8080;
 
        // thread body for socket-listener
        void run()
        {       
                auto server = new ServerSocket (new InternetAddress(port));
                
                // wait for requests
                auto request = server.accept;

                // write a response 
                request.output.write ("server replies 'hello'");
        }

        // start server in a separate thread, and wait for it to start
        (new Thread (&run)).start;
        Thread.sleep (0.250);

        // make a connection request to the server
        auto request = new SocketConduit;
        request.connect (new InternetAddress("localhost", port));

        // wait for and display response (there is an optional timeout)
        char[64] response;
        auto len = request.input.read (response);
        Cout (response[0..len]).newline;

        request.close;
}