2016-02-13 53 views
1

我有一個奇怪的問題。試圖在python中編寫一個網絡應用程序。目前我正在使用osx,而且我有套接字問題。我的代碼工作Debian的罰款,但是當我嘗試對連接的TCP套接字使用recv(buff_size)我得到這個錯誤:
socket.error: [Errno 35] Resource temporarily unavailablePython插槽錯誤否35

回答

2

是否使用非阻塞套接字,或超時? According to this table,Errno 35在OSX上爲EAGAIN;根據Apple man pages recv(2)

[ EAGAIN ]

The socket is marked non-blocking, and the receive operation would block, or a receive timeout had been set, and the timeout expired before data were received.

這也可能是可能的socket.setdefaulttimeout被稱爲非零值(在這種情況下socket.getdefaulttimeout將返回非none值


Spurious recv() EAGAIN on OSX?見; Blocking socket returns EAGAIN

+0

我沒有將套接字設置爲阻塞或非阻塞,我認爲它們在默認情況下是阻塞的,當我手動設置阻塞時,它可以工作 – fulaphex

+0

但是在一個示例中,我從一些教程中得到了我沒有看到將套接字設置爲阻塞,然而'recv()'只是阻塞套接字,直到有什麼東西進入套接字。 – fulaphex

+0

是的,我希望他們也能被阻止,但也許別的什麼是設置默認值。 –