Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #70938

Re: socket client and server in one application?

References <2db82378-5bb3-4a5c-b9e0-7ccb29760a06@googlegroups.com> <69f1b8e6-0b03-4d26-9b89-0d7b3dc43b16@googlegroups.com>
Date 2014-05-06 09:05 +1000
Subject Re: socket client and server in one application?
From Chris Angelico <rosuav@gmail.com>
Newsgroups comp.lang.python
Message-ID <mailman.9689.1399331130.18130.python-list@python.org> (permalink)

Show all headers | View raw


On Tue, May 6, 2014 at 8:37 AM,  <chris@freeranger.com> wrote:
> I'm using a dispatch method to receive and occasionally send data through a serial port on a Raspberry Pi.  I think the dispatch method is essentially a threaded approach, right?
>
> Now to receive serial data and send via socket, then occasionally receive some socket based input and send out on the same serial port.  It's combining the client and server socket code into a single app (so I can have a single connection to the serial port) that has me confused.  I don't see any discussion of that anywhere.
>

Threads would be easy. As I understand it, you have two bidirectional
connections, and you're simply linking them? Sounds like a very simple
proxy/tunnel. You don't need to multiplex, so all you need is two
threads: one reading from the socket and writing to the serial port,
and one reading from the serial port and writing to the socket. The
code would look something like this:

serial_port = open(...)
tcp_socket = socket.create_connection(...)
# initialize them both, do whatever setup is needed

def socket_to_serial():
    while True:
        data = tcp_socket.recv(4096)
        serial_port.write(data)

Thread.Thread(target=socket_to_serial).start()

while True:
    data = serial_port.read(4096)
    tcp_socket.send(data)


Two simple loops, running concurrently. Pretty straight-forward as
threads. Both of them will fall idle in their read/recv calls, so
threading works very nicely here.

ChrisA

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

socket client and server in one application? chris@freeranger.com - 2014-05-05 08:33 -0700
  Re: socket client and server in one application? Marko Rauhamaa <marko@pacujo.net> - 2014-05-05 18:38 +0300
  Re: socket client and server in one application? CHIN Dihedral <dihedral88888@gmail.com> - 2014-05-05 11:26 -0700
  Re: socket client and server in one application? Grant Edwards <invalid@invalid.invalid> - 2014-05-05 19:47 +0000
  Re: socket client and server in one application? chris@freeranger.com - 2014-05-05 15:37 -0700
    Re: socket client and server in one application? Chris Angelico <rosuav@gmail.com> - 2014-05-06 09:05 +1000
      Re: socket client and server in one application? chris@freeranger.com - 2014-05-15 21:59 -0700

csiph-web