Opening sockets on multiple ports
alain.desilets at nrc.ca
Tue Nov 13 16:48:55 CET 2001
Alain Désilets wrote:
> Found what the problem was.
> Basically, the client could only connect to the TO_SERVER port, because that was the first port that the server listened to using the
> SocketServer.serve_forever() method. For some reason, when I later invoked SocketServer.server_forever() on the FROM_SERVER port, it never got
> to listen to that port, eventhough it was running in a separate thread from the first one.
> I get around the problem by not using server_forever. Instead, I alternate between the two SocketServer instances and manually invoke
> handle_request to handle a single request on each.
> Attached is the modified code.
I'm such a dunce!
I just figured out why the REAL problem in my original scripts.
I thought I was running the two SocketServer.serve_forever() in different threads, but in fact, I was starting both threads by invoking their
run() method directly. The proper way to start a thread (as I have now discovered) is to invoke threading.Thread.start() which invokes
threading.Thread.run() in a new thread. Invoking threading.Thread.run() directly doesn't run it in a new thread.
More information about the Python-list