2011-06-05 106 views

回答

11

如有疑問,請撥打check the source。如果您在非調用poll()或select()的情況下在非阻塞套接字上調用它,send()將返回-1,它將執行此操作(與EAGAIN或EWOULDBLOCK的errno一起),則顯然放棄。 (並且internal_select函數在套接字非阻塞時跳過調用poll()/ select()。)

所以我想說PyNet作者是正確的。

+0

這聽起來不像是該模塊的開發人員沒有處理'EAGAIN'和'EWOULDBLOCK'的錯誤嗎?這些很難被認爲是特殊的條件,恕我直言。 – PypeBros 2012-03-06 14:18:25

5

sendall()在無阻塞套接字上沒有意義。它不得不阻止一次發送所有數據,否則它不會被稱爲「sendall」。