I'm trying to play with inter-process communication and since I could not figure out how to use named pipes under Windows I thought I'll use network sockets. Everything happens locally. The server is able to launch slaves in a separate process and listens on some port. The slaves do their work and submit the result to the master. How do I figure out which port is available? I assume I cannot listen on port 80 or 21?
I'm using Python, if that cuts the choices down.
You can listen on whatever port you want; generally, user applications should listen to ports 1024 and above (through 65535).  The main thing if you have a variable number of listeners is to allocate a range to your app - say 20000-21000, and CATCH EXCEPTIONS.  That is how you will know if a port is unusable (used by another process, in other words) on your computer.  
However, in your case, you shouldn't have a problem using a single hard-coded port for your listener, as long as you print an error message if the bind fails.
Note also that most of your sockets (for the slaves) do not need to be explicitly bound to specific port numbers - only sockets that wait for incoming connections (like your master here) will need to be made a listener and bound to a port.  If a port is not specified for a socket before it is used, the OS will assign a useable port to the socket.  When the master wants to respond to a slave that sends it data, the address of the sender is accessible when the listener receives data.
I presume you will be using UDP for this?
On localhost, how do I pick a free port number?