Threads and sockets

Discussion in 'Python' started by loial, Aug 10, 2012.

  1. loial

    loial Guest

    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).

    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.

    Can I open a port once and then use 2 different threads, one to write to the post and one to read the responses)?
     
    loial, Aug 10, 2012
    #1
    1. Advertisements

  2. That should be possible. Alternatively, you could use "asyncore" -- a
    mini framework to facilitate asynchronous communication.
     
    Dieter Maurer, Aug 10, 2012
    #2
    1. Advertisements

  3. By "port" I assume you mean a TCP connection using the 'socket' module?

    If so, then yes you can write using one thread and read using a
    second thread. I do that all the time.

    Sometimes it's simpler to use a single thread that uses select or
    poll, and sometimes it's simpler to use multiple threads. And you
    never know which way is best until you're half way down the wrong
    road...
     
    Grant Edwards, Aug 10, 2012
    #3
  4. Am 10.08.2012 15:01, schrieb loial:
    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.

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

    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
     
    Ulrich Eckhardt, Aug 13, 2012
    #4
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.