共用方式為


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_SOCKETIPPROTO_TCP

傳回值

如果不是零,則函式成功,否則 0 和特定錯誤碼來呼叫 GetLastError擷取。 如果選取尚未將與 SetSockOpt,則 GetSockOpt 傳回選項的預設值。 下列錯誤套用至這個成員函式:

  • WSANOTINITIALISED A 成功 AfxSocketInit 必須在使用此 API 之前發生。

  • WSAENETDOWN 視窗通訊端實作偵測網路子系統失敗。

  • WSAEFAULTlpOptionLen 引數無效。

  • 封鎖視窗通訊端作業的WSAEINPROGRESS A 正在進行中。

  • WSAENOPROTOOPT 選項為未知或不支援。 特別是,反之, SO_ACCEPTCONNSO_DONTLINGERSO_KEEPALIVESO_LINGERSO_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

請參閱

參考

CAsyncSocket 類別

階層架構圖

CAsyncSocket::SetSockOpt