CAsyncSocket::Send
呼叫此成員函式傳送有關已連接之通訊端的資料。
virtual int Send(
const void* lpBuf,
int nBufLen,
int nFlags = 0
);
參數
lpBuf
包含資料的緩衝區傳輸。nBufLen
資料的長度 (以 lpBuf 的 (以位元組為單位)。nFlags
指定呼叫的方法。 通訊端選項和 nFlags 參數取決於函式語意。 後者可透過合併下列其中一個值來建構的 C++ OR 運算子:MSG_DONTROUTE 指定資料不應傳送受到限制。 Windows Sockets 供應商可以選擇忽略這個旗標。
MSG_OOB 傳送 Out-of-Band 資料 (僅限SOCK_STREAM )。
傳回值
如果未發生任何錯誤, 傳送 傳回傳送的字元總數。 (請注意這項 nBufLen運算式的數目可能小於)。否則, SOCKET_ERROR 的值,都會傳回,而特定錯誤碼來呼叫 GetLastError擷取。 下列錯誤套用至這個成員函式:
WSANOTINITIALISED A 成功 AfxSocketInit 必須在使用此 API 之前發生。
WSAENETDOWN 視窗通訊端實作偵測網路子系統失敗。
WSAEACCES 需求的位址是廣播位址,不過,適當的旗標尚未設定。
封鎖視窗通訊端作業的WSAEINPROGRESS A 正在進行中。
WSAEFAULTlpBuf 引數不在使用者位址空間中的有效區段。
WSAENETRESET 連接,因為 Windows Sockets 實作去除,它必須重設。
WSAENOBUFS Windows Sockets 實作報表緩衝區死結。
WSAENOTCONN 通訊端未連接。
WSAENOTSOCK 描述元不是通訊端。
WSAEOPNOTSUPP MSG_OOB 已指定,但不是,通訊端類型 SOCK_STREAM。
WSAESHUTDOWN 通訊端已經關閉,,在 ShutDown 叫用 nHow 設為 1 或 2. 之後,呼叫在通訊端上 傳送 是不可能的。
WSAEWOULDBLOCK 通訊端標記為未封鎖,並且所要求的作業將會封鎖。
WSAEMSGSIZE 通訊端是型別, SOCK_DGRAM,而且資料包大於視窗通訊端實作支援的最大值。
WSAEINVAL 通訊端未繫結的 繫結。
WSAECONNABORTED 虛擬通道中止的緣故暫止或任何其他失敗。
WSAECONNRESET 虛擬通道由遠端重設。
備註
在傳送 連接資料流或資料包通訊端用來寫入輸出資料。 對於資料包通訊端,必須小心不要超過基礎子網路的 IP 封包大小上限時,就 AfxSocketInit傳回的 WSADATA 結構項目的 iMaxUdpDg 度量。 如果資料太長而無法通過原子基礎通訊協定,錯誤 WSAEMSGSIZE 傳遞 GetLastError,都會傳回,而且資料不會傳輸。
請注意您資料包通訊端 傳送 順利完成並不代表資料已成功傳遞資料。
在型別 SOCK_STREAMCAsyncSocket 物件,寫入的位元組數。可以是介於 1 和要求的長度之間,端視區域和外部主機的緩衝區的可用性。
範例
CAsyncSocket::OnSend。請參閱範例。
需求
Header: afxsock.h