2011-09-28 2 views
3

J'ai une application Python qui utilise UDP sendto/recvfrom avec l'attribut socket.MSG_DONTWAIT. Sous Linux et Mac OS X, cela fonctionne très bien. Toutefois, ce drapeau n'existe pas dans l'environnement Windows.Socket Python question: socket.MSG_DONTWAIT dans Windows

Quel est l'indicateur équivalent dans Windows? Alternativement, comment puis-je faire sendto/recvfrom non bloquant dans Windows?

Répondre

3

socket.setblocking(False) commute votre socket en mode non bloquant sur n'importe quelle plate-forme. Appelez cela une fois lors de la création du socket et vous pouvez supprimer tous les indicateurs MSG_DONTWAIT.

Si vous devez basculer entre les E/S bloquantes et non bloquantes (ce qui n'est généralement pas le cas), appelez socket.setblocking chaque fois que vous souhaitez basculer entre les deux.