CAsyncSocket::GetSockOpt
呼叫此成員函式以取得通訊端選項。
BOOL GetSockOpt(
int nOptionName,
void* lpOptionValue,
int* lpOptionLen,
int nLevel = SOL_SOCKET
);
參數
nOptionName
值會被擷取的通訊端選項。lpOptionValue
此需求選擇的值會傳回緩衝區的指標。值與 選項的選擇在緩衝區 lpOptionValue傳回。整數所指向的 lpOptionLen 應該在位元組原本包含此緩衝區的大小,並在傳回時,它會將傳回值的大小。如需 SO_LINGER,這會是 LINGER 結構的大小,若為其他選項會 BOOL 或 int的大小,端視選取。請參閱選項及其大小的清單在<備註>一節。lpOptionLen
為 lpOptionValue 緩衝區的大小指標 (以位元組為單位)。nLevel
選項定義的層級,唯一支援的層級是 SOL_SOCKET 和 IPPROTO_TCP。
傳回值
如果不是零,則函式成功,否則 0 和特定錯誤碼來呼叫 GetLastError擷取。如果選取尚未將與 SetSockOpt,則 GetSockOpt 傳回選項的預設值。下列錯誤套用至這個成員函式:
WSANOTINITIALISED A 成功 AfxSocketInit 必須在使用此 API 之前發生。
WSAENETDOWN 視窗通訊端實作偵測網路子系統失敗。
WSAEFAULTlpOptionLen 引數無效。
封鎖視窗通訊端作業的WSAEINPROGRESS A 正在進行中。
WSAENOPROTOOPT 選項為未知或不支援。特別是,反之, SO_ACCEPTCONN、 SO_DONTLINGER、 SO_KEEPALIVE、 SO_LINGER和 SO_OOBINLINE 在型別 SOCK_DGRAM通訊端,不支援 SO_BROADCAST 在型別 SOCK_STREAM通訊端不支援。
WSAENOTSOCK 描述元不是通訊端。
備註
在GetSockOptlpOptionValue擷取通訊端選項的目前值與任何類型的通訊端,在所有狀態,並將結果儲存起來。選項會影響通訊端作業,例如封包路由, Out-of-Band 資料傳送,依此類推。
下列選項對 GetSockOpt支援。型別識別 lpOptionValue處理之資料的型別。TCP_NODELAY 選擇使用層級 IPPROTO_TCP;其他選項使用層級 SOL_SOCKET。
值 |
型別 |
意義 |
---|---|---|
SO_ACCEPTCONN |
BOOL |
通訊端接聽。 |
SO_BROADCAST |
BOOL |
通訊端為廣播傳輸訊息的配置。 |
SO_DEBUG |
BOOL |
偵錯。 |
SO_DONTLINGER |
BOOL |
如果為 true, SO_LINGER 選項都會停用。 |
SO_DONTROUTE |
BOOL |
路由會停用。 |
SO_ERROR |
int |
擷取錯誤狀態並清除。 |
SO_KEEPALIVE |
BOOL |
Keep-Alive 傳送。 |
SO_LINGER |
結構的延遲 |
傳回目前持續選項。 |
SO_OOBINLINE |
BOOL |
Out-of-Band Data 在一般資料流接收。 |
SO_RCVBUF |
int |
緩衝區大小會接收。 |
SO_REUSEADDR |
BOOL |
通訊端可以繫結至已在使用中的位址。 |
SO_SNDBUF |
int |
緩衝區大小為傳送。 |
SO_TYPE |
int |
通訊端 (例如, SOCK_STREAM) 的型別。 |
TCP_NODELAY |
BOOL |
停用用於傳送聯合的 Nagle 演算法。 |
柏標記來源軟體執行應用程式。 GetSockOpt 不支援 (BSD) 的選項為:
值 |
型別 |
意義 |
---|---|---|
SO_RCVLOWAT |
int |
接收的下限標準。 |
SO_RCVTIMEO |
int |
接收逾時。 |
SO_SNDLOWAT |
int |
傳送的下限標準。 |
SO_SNDTIMEO |
int |
傳送逾時。 |
IP_OPTIONS |
|
取得 IP 標頭的選項。 |
TCP_MAXSEG |
int |
取得最大 TCP 區段大小。 |
呼叫具有不支援之選項的 GetSockOpt 將導致傳回的 WSAENOPROTOOPT 錯誤碼 GetLastError。
需求
Header: afxsock.h