Threads and sockets

Ulrich Eckhardt ulrich.eckhardt at dominolaser.com
Mon Aug 13 03:15:53 EDT 2012


Am 10.08.2012 15:01, schrieb loial:
> I am writing an application to send data to a printer port(9100) and
> then recieve PJL responses back on that port. Because of the way PJL
> works I have to do both in the same process(script).

If I understand that right, you are opening a TCP connection, so 
obviously this must be done in the same process, regardless of what PJL 
(whatever that exactly is) does.


> At the moment I do not start to read responses until the data has
> been sent to the printer. However it seems I am missing some
> responses from the printer whilst sending the data, so I need to be
> able to do the 2 things at the same time.

Using TCP, that shouldn't happen, so I really wonder what exactly you 
are doing here.


> Can I open a port once and then use 2 different threads, one to write
> to the post and one to read the responses)?

Yes, definitely, take a look at the select() function of the select 
module. This basically looks like this:

   (r, w, x) = select(...)
   if r:
       # read and handle incoming data
       ...
   if w:
       # write pending output data
       ...
   if x:
       # handle connection failure
       ...


If all this is not what you are doing and what you want (which I'm not 
100% sure of) then please elaborate a bit what you're doing and what 
kind of connection you are using.

Happy hacking!

Uli



More information about the Python-list mailing list