| 層級 | 選項 | 說明 |
|---|---|---|
| SOL_SOCKET (通用 Socket 選項) | SO_KEEPALIVE | 允許 TCP 連線保活檢測 |
| SO_REUSEADDR | 允許本地地址重用 | |
| SO_LINGER | 允許 TCP 連線保持一段時間直到資料發送完畢 | |
| SO_SNDBUF | Socket 發送緩衝區大小 | |
| SO_RCVBUF | Socket 接收緩衝區大小 | |
| SO_TYPE | 取得 Socket 類型 | |
| SO_ERROR | 取得 Socket 錯誤並清除 | |
| ... | ... | |
| SOL_TCP (TCP 協議層選項) | TCP_NODELAY | 禁止 TCP Nagle 演算法 |
| TCP_MAXSEG | TCP 最大分段值 | |
| ... | ... |
伺服器常處於阻塞狀態等待客戶端請求。若客戶端因關機、待機斷開連線,伺服器無法即時得知,導致為已斷開連線保持資源。保活選項可檢測此情況。
#define TRUE 1 #define FALSE 0 setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, &so_keepalive, sizeof(so_keepalive));
允許本地地址端口快速重用,避免 TIME_WAIT 狀態導致綁定失敗。
#define TRUE 1 #define FALSE 0 setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &so_reuseaddr, sizeof(so_reuseaddr));