[Python-Dev] Iterable sockets?

Andrew McNamara andrewm@object-craft.com.au
Fri, 14 Mar 2003 13:38:00 +1100

>> Line oriented network protocols are very common, and I often find myself
>> calling the socket makefile method so I can read complete lines from a
>> socket. I'm probably not the first one who's wished that socket objects
>> where more file-like.
>> While I don't think we'd want to go as far as to turn them into a stdio
>> based file object, it might make sense to allow them to be iterated over
>> (and add a .readline() method, I guess). This would necessitate adding some
>> input buffering, which will complicate things like the .recv() method, so
>> I'm not sure it's that good an idea, but it removes one gotchya for
>> neophytes (and forgetful veterans). Thoughts?
>Um, why doesn't the makefile() method do what you want?

The short answer is that it does, but not very tidily - by turning the
socket object into a file object, I lose the original socket object
functionality (for example, shutdown()).

At another level, the concept of a "file-like" object is a very common
python idiom - socket is the odd one out these days.

It's really not a big deal - we could regularise the interface at the
cost of more implementation complexity.

Andrew McNamara, Senior Developer, Object Craft