socket中so error的處理

2021-05-21 15:04:59 字數 567 閱讀 9850

當套介面上發生錯誤時,源自berkeley的核心中的協議模組將此套介面的名為so_error的變數設為標準的unix e***值中的乙個,

它稱為此套介面的待處理錯誤(pending error)。核心可立即以以下兩種方式通知程序:

1. 如果程序阻塞於次套介面的select呼叫,則無論是檢查可讀條件還是可寫條件,select都返回並設定其中乙個或所有兩個條件。

2. 如果程序使用訊號驅動i/o模型,則給程序或程序組生成訊號sigio。

程序然後可以通過獲取so_error套介面選項來得到so_error的值。由getsockopt返回的整數值就是此套介面的待處理錯誤。

so_error隨後由核心復位為0。

當程序呼叫read且沒有資料返回時,如果so_error為非0值,則read返回-1且errno設為so_error的值,接著so_error的值被復位為0。

如果此套介面上有資料在排隊,則read返回那些資料而不是返回錯誤條件。

如果程序呼叫write時so_error為非0值,則write返回-1且errno設為so_error的值,隨後so_error也被復位。

C 中Socket的運用

原文 http hi.baidu.com eleven 5f2020 blog item 8217de2e8a8c093a359bf763.html c 中socket的運用 2010 08 31 12 01 流的說明 資料的傳輸都會用到流,一般的檔案如文字 等,可以運用filestream類來完成...

VC中的socket程式設計

基於tcp的socket程式設計 伺服器端程式 1 建立socket 2 將套接字繫結到乙個本地位址和埠上 bind 3 將套接字設為監聽模式,準備接受客戶請求 listen 4 等待客戶請求到來 當請求到來後,結合搜此次連線的套接字 accept 5 用返回的套接字和客戶端進行通訊 send re...

QT中的SOCKET程式設計

作業系統 arm linux qt版本 qt 2.3.2 for linux gui qtopia 在linux下進行網路程式設計,我們可以使用linux提供的統一的套接字介面。但是這種方法牽涉到太多的結構體,比如ip位址,埠轉換等,不熟練的人往往容易犯這樣那樣的錯誤。qt中提供的socket完全使...