On 2013-12-11, Dan Stromberg <drsali...@gmail.com> wrote: > On Wed, Dec 11, 2013 at 3:08 PM, Jean Dubois <jeandubois...@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.
Just to be pedantic: _TCP_ sockets reserver that right. UDP sockets do not, and do in fact guarantee that each message is discrete. [It appears that the OP is undoubtedly using TCP sockets.] > 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. And it _will_ fail someday in some odd circumstance when, for example, some customer is be using it via a dial-up PPP connection, or there is a satellite link in the path, or there's a flakey router somewhere, or... -- Grant Edwards grant.b.edwards Yow! Those people look at exactly like Donnie and gmail.com Marie Osmond!! -- https://mail.python.org/mailman/listinfo/python-list