[newbie] trying socket as a replacement for nc

Dan Stromberg drsalists at gmail.com
Wed Dec 11 18:20:36 EST 2013


On Wed, Dec 11, 2013 at 3:08 PM, Jean Dubois <jeandubois314 at gmail.com>wrote:

> I have an ethernet-rs232 adapter which allows me to connect to a
> measurement instrument by means of netcat on a linux system.
> e.g. entering nc 10.128.59.63 7000
> allows me to enter e.g.
> *IDN?
> after which I get an identification string of the measurement instrument
> back.
> I thought I could accomplish the same using the python module "socket"
> and tried out the sample program below which doesn't work however:
>

Sockets reserve the right to split one socket.send() into multiple
socket.recv()'s on the other end of the communication, or to aggregate
multiple socket.send()'s into a single socket.recv() - pretty much any way
the relevant IP stacks and communications equipment feel like for the sake
of performance or reliability.

The confusing thing about this is, it won't be done on every transmission -
in fact, it'll probably happen rather seldom unless you're on a heavy
loaded network or have some MTU issues (see Path MTU Discovery, and bear in
mind that paths can change during a TCP session).  But writing your code
assuming it will never happen is a bad idea.

For this reason, I wrote
http://stromberg.dnsalias.org/~strombrg/bufsock.html , which abstracts away
these complications, and actually makes things pretty simple.  There are
examples on the web page.

HTH
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20131211/eaa70c79/attachment.html>


More information about the Python-list mailing list