Socket server
Jonathan Gardner
jgardn at alumni.washington.edu
Thu Jan 17 16:32:07 EST 2002
On Friday 18 January 2002 03:39 am, Hugo Martires wrote:
> I have a server that answer a single client, but now i need moore
> clients.
>
> Witch is the best way to make a server socket that answer's the call's
> of many clients ?
> I have to use threads ? Queues ?
>
> Can any one send me a simple example ?
>
"Simple Example" - it's not so simple anymore. Depending on what you want to
do, your options are:
- Forking. Each new call is answered by forking off a child process. The
child process does all the work, and when it is done, it dies. This is how
Apache does it. You can get it into all kinds of fun problems, like keeping
some children alive, telling those children to die after so many times,
etc... Your level of complexity depends on what you want.
- Threading. Each new call is answered with a new thread. This entails all
that threading is about. It gives you similar results as the above, except
each thread can play with the parent in the way that threads like to do.
- Multiplexing. You run in a tight loop, waiting until there is something to
read or until one of the sockets is ready to write to. The simplest example
of this is much more complicated than the above two, but it really isn't that
hard. This is the best bet for MUDs and such. And you can't really make it
much better. However, windows doesn't treat sockets like files, and so you
run into some interesting problems on windows that just aren't issues on a
real operating system. (Like, you can run a select call on stdin, stdout, and
stderr.)
Code for each of these abounds on the internet. Take a google search. Look
through the modules for SocketServer and its children. You will find the
modules remarkable readable, even to a newbie.
Jonathan
More information about the Python-list
mailing list