How to end TCP socket data while using readline()?
python at mrabarnett.plus.com
Fri Feb 26 20:45:58 CET 2010
Arjun Chennu wrote:
> No need to flush because you're writing to a file and it'll be flushed
> anyway when you close it.
> True. I had introduced those flush lines while I was trying to
> troubleshoot this annoying situation. :-)
> You've closed the file view, but the underlying socket is still open.
> The server will see EOF only when the socket is closed by the client,
> and closing the file view doesn't close the socket itself.
> That's what I intended to do. Keep the socket open, but close the file
> object so that the direction of transfer can be reversed and a "done"
> message can be sent to the client.
> TCP is meant to facilitate two-directional transfer innit? So how do I
> do that while using file objects? If i have to close the socket to do
> that, it seems a bit wasteful in terms of network 'transactions'
> Thanks for your reply. I've already confirmed that closing the socket
> does indeed move the program ahead --- but I'd like to now make
> two-directional comm. possible.
Here's a trick borrowed from the POP3 format (used for email).
cf = conn.makefile('r', 0) # file like obj for socket
lf = open('ccs.txt', 'w')
for line in cf:
if line == '.end\n':
line = line[1 : ]
cf = s.makefile('w', 0)
for line in sfp.readlines():
More information about the Python-list