Socket.SendAsync(SocketAsyncEventArgs) 方法

定義

非同步地將資料傳送到連接 Socket 的物件。

public:
 bool SendAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendAsync(System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendAsync (e As SocketAsyncEventArgs) As Boolean

參數

e
SocketAsyncEventArgs

用於此非同步套接字操作的 SocketAsyncEventArgs 物件。

傳回

true 如果 I/O 操作尚未完成。 Completed操作完成後,參數上的e事件會被觸發。

false 如果 I/O 操作同步完成。 此時, Completed 參數上的 e 事件不會被提出 e ,且在方法呼叫返回後可立即檢查作為參數的物件以取得操作結果。

例外狀況

Buffer參數上的 BufferList or e 屬性必須參考有效的緩衝區。 這些屬性中可以設定其中一種,但不能同時設定兩者。

套接字操作已經在進行中,使用 SocketAsyncEventArgs 參數中 e 指定的物件。

該店 Socket 已經關閉。

尚未 Socket 連接或未透過 Accept()AcceptAsync(SocketAsyncEventArgs)BeginAccept、 方法取得。

備註

SendAsync 方法用於從一個或多個連線導向套接字的緩衝區寫入出站資料。 不過,這種方法也可用於在連接操作中指定遠端主機的無連接套接字。

此方法會SendAsync啟動非同步傳送操作至遠端主機,該操作已Accept依 , AcceptAsyncBeginAcceptBeginConnectConnect, 或 ConnectAsync 方法設定。

成功呼叫此方法需具備以下物件屬性 System.Net.Sockets.SocketAsyncEventArgs 與事件:

呼叫者可在呼叫SocketAsyncEventArgs.UserToken方法前,將該屬性設定SendAsync為任何使用者狀態物件,使資訊能在回撥方法中被檢索。 如果回調需要的資訊超過單一物件,可以建立一個小型類別來將其他所需的狀態資訊作為成員。

若未先呼叫 SendAsyncAcceptAcceptAsyncBeginAcceptBeginConnectConnect,方法將ConnectAsync拋出例外。

呼叫這個 SendAsync 方法讓你能夠在獨立執行緒中傳送資料。

對於訊息導向套接字,請勿超過底層 Windows 套接字服務提供者的最大訊息大小。 若資料過長無法透過底層服務提供者原子傳輸,則不會傳送資料,該SendAsync方法會拋出帶有 SocketException 的 a SocketAsyncEventArgs.SocketError 並映射為原生 Winsock WSAEMSGSIZE 錯誤碼(10040)。

請注意,方法成功完成 SendAsync 並不代表資料已成功傳送。

適用於

另請參閱