閱讀英文

共用方式為


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

請參閱

參考

CAsyncSocket 類別

階層架構圖

CAsyncSocket::Create

CAsyncSocket::Receive

CAsyncSocket::ReceiveFrom

CAsyncSocket::SendTo