2014-01-15 28 views
1

處理什麼樣的錯誤使用非阻塞的套接字與客戶進行溝通,什麼樣的錯誤代碼,我們必須關心和直接的close()做得比調用其他的東西嗎?任何人都可以列出它們並給出一些關於我們必須做什麼額外工作的評論?難道我們在使用套接字

目前我們只能處理EAGAIN和EWOULDBLOCK,對於所有其他錯誤,我們只是關閉套接字。對於服務器軟件,這種套接字異常例程足夠了嗎?

回答

0

我想你已經大部分得到它的權利。有跡象表明,我的代碼重試上,而不是關閉套接字其他兩個瞬態錯誤,它們分別是:

EINTR - 這可以在系統調用被傳遞一個信號中斷返回。通常適當的響應是再次嘗試系統調用。 (有關詳細信息,請參閱here

ENOBUFS - 在某些情況下,如果網絡接口的輸出隊列已滿,則send()可以返回此值。 (是的,你所期望的發送()返回EWOULDBLOCK或EAGAIN代替,但我已經看到了這個返回)

相關問題