win32 socket, "Operation not supported"

Thomas Heller theller at python.net
Fri Dec 12 13:14:50 EST 2003


David Konerding <dek at compbio.berkeley.edu> writes:

> Hello,
>
> I have written an app which opens a TCP connection to a server and
> uses a protocol to communicate with it.  Specifically, I've written a
> python IMD client for the molecular dynamics application 'NAMD' (do
> searches for IMD and NAMD if you want to learn more).
>
> The protocol is very simple: both ends of the TCP connection can send
> messages to the other side at any time; when data is available on a
> read socket, a full packet (with known size) is read in a blocking
> fashion from the socket.
>
> This is used, on the client side, to make requests of the molecular
> dynamics engine (such as "speed up", or "slow down", or "quit").  The
> server side periodically sends updates on the state of the molecular
> dynamics engine (current step, atomic coords, etc).
>
> This all works fine on linux: I can connect, and send and receive
> messages as necessary.
>
> However, on Windows, I can connect and complete the initial handshake,
> and receive periodic updates, but when I try to send a message to the
> server, socket.send gets an "Operation not supported".
>
> From my reading of the win32 docs, the socket send call returns this
> in a couple of situations: when a two-way socket had one half shut
> down and the send would have used the shut down direction, or when an
> out of band message was sent on a socket type which does not support
> it (such as UDP).
>
> Neither of these situations are true.  When I re-code the app in C,
> the problem doesn't occur.  Anybody got some suggestions?  (PS: the
> socket I/O is set to blocking, and the Nagle algorithm is disabled).

I have no idea, and if it works in C it should also work in Python ;-).

OTOH, the approach you take sounds a little strange - if you communicate
with fixed size packets wouldn't UDP datagrams fit better? This would
IIUC also remove the requirement to disable the nagle algo.

Thomas




More information about the Python-list mailing list