Socket.SendAsync 方法

定義

多載

SendAsync(ReadOnlyMemory<Byte>, CancellationToken)

在連接的套接字上傳送數據。

SendAsync(IList<ArraySegment<Byte>>, SocketFlags)

在連接的套接字上傳送數據。

SendAsync(ArraySegment<Byte>, SocketFlags)

在連接的套接字上傳送數據。

SendAsync(ReadOnlyMemory<Byte>, SocketFlags, CancellationToken)

在連接的套接字上傳送數據。

SendAsync(IList<ArraySegment<Byte>>)

在連接的套接字上傳送數據。

SendAsync(ArraySegment<Byte>)

在連接的套接字上傳送數據。

SendAsync(SocketAsyncEventArgs)

將資料以非同步方式傳送至已連接的 Socket 物件。

SendAsync(ReadOnlyMemory<Byte>, CancellationToken)

來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs

在連接的套接字上傳送數據。

C#
public System.Threading.Tasks.ValueTask<int> SendAsync(ReadOnlyMemory<byte> buffer, System.Threading.CancellationToken cancellationToken = default);

參數

buffer
ReadOnlyMemory<Byte>

要傳送之數據的緩衝區。

cancellationToken
CancellationToken

可用來取消異步操作的取消標記。

傳回

以傳送的位元組數目完成的異步工作。

例外狀況

取消令牌已取消。 此例外狀況會儲存在傳回的工作中。

適用於

.NET 10 和其他版本
產品 版本
.NET 7, 8, 9, 10

SendAsync(IList<ArraySegment<Byte>>, SocketFlags)

來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs

在連接的套接字上傳送數據。

C#
public System.Threading.Tasks.Task<int> SendAsync(System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);

參數

buffers
IList<ArraySegment<Byte>>

要傳送之數據的緩衝區清單。

socketFlags
SocketFlags

SocketFlags 值的位元組合,會在傳送數據時使用。

傳回

以傳送的位元組數目完成的異步工作。

例外狀況

buffersnull

嘗試存取通訊端時發生錯誤。

備註

這個方法會儲存在工作中,它會傳回方法同步對應專案可以擲回的所有非使用狀況例外狀況。 如果例外狀況儲存在傳回的工作中,則會在等候工作時擲回該例外狀況。 使用狀況例外狀況,例如 ArgumentException,仍會同步擲回。 如需預存的例外狀況,請參閱 所 Send(IList<ArraySegment<Byte>>, SocketFlags)擲回的例外狀況。

適用於

.NET 10 和其他版本
產品 版本
.NET 6, 7, 8, 9, 10

SendAsync(ArraySegment<Byte>, SocketFlags)

來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs

在連接的套接字上傳送數據。

C#
public System.Threading.Tasks.Task<int> SendAsync(ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);

參數

buffer
ArraySegment<Byte>

要傳送之數據的緩衝區。

socketFlags
SocketFlags

SocketFlags 值的位元組合,會在傳送數據時使用。

傳回

以傳送的位元組數目完成的異步工作。

例外狀況

嘗試存取通訊端時發生錯誤。

適用於

.NET 10 和其他版本
產品 版本
.NET 6, 7, 8, 9, 10

SendAsync(ReadOnlyMemory<Byte>, SocketFlags, CancellationToken)

來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs

在連接的套接字上傳送數據。

C#
public System.Threading.Tasks.ValueTask<int> SendAsync(ReadOnlyMemory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Threading.CancellationToken cancellationToken = default);

參數

buffer
ReadOnlyMemory<Byte>

要傳送之數據的緩衝區。

socketFlags
SocketFlags

SocketFlags 值的位元組合,會在傳送數據時使用。

cancellationToken
CancellationToken

可用來取消異步操作的取消標記。

傳回

以傳送的位元組數目完成的異步工作。

例外狀況

嘗試存取通訊端時發生錯誤。

取消令牌已取消。 此例外狀況會儲存在傳回的工作中。

適用於

.NET 10 和其他版本
產品 版本
.NET 6, 7, 8, 9, 10

SendAsync(IList<ArraySegment<Byte>>)

來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs

在連接的套接字上傳送數據。

C#
public System.Threading.Tasks.Task<int> SendAsync(System.Collections.Generic.IList<ArraySegment<byte>> buffers);

參數

buffers
IList<ArraySegment<Byte>>

要傳送之數據的緩衝區清單。

傳回

以傳送的位元組數目完成的異步工作。

例外狀況

buffersnull

嘗試存取通訊端時發生錯誤。

備註

這個方法會儲存在工作中,它會傳回方法同步對應專案可以擲回的所有非使用狀況例外狀況。 如果例外狀況儲存在傳回的工作中,則會在等候工作時擲回該例外狀況。 使用狀況例外狀況,例如 ArgumentException,仍會同步擲回。 如需預存的例外狀況,請參閱 所 Send(IList<ArraySegment<Byte>>)擲回的例外狀況。

適用於

.NET 10 和其他版本
產品 版本
.NET 7, 8, 9, 10

SendAsync(ArraySegment<Byte>)

來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs

在連接的套接字上傳送數據。

C#
public System.Threading.Tasks.Task<int> SendAsync(ArraySegment<byte> buffer);

參數

buffer
ArraySegment<Byte>

要傳送之數據的緩衝區。

傳回

以傳送的位元組數目完成的異步工作。

例外狀況

嘗試存取通訊端時發生錯誤。

適用於

.NET 10 和其他版本
產品 版本
.NET 7, 8, 9, 10

SendAsync(SocketAsyncEventArgs)

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

將資料以非同步方式傳送至已連接的 Socket 物件。

C#
public bool SendAsync(System.Net.Sockets.SocketAsyncEventArgs e);

參數

e
SocketAsyncEventArgs

SocketAsyncEventArgs 物件,用於這個非同步通訊端作業。

傳回

若 I/O 作業暫止,則為 true。 作業完成時會引發與 e 參數有關的 Completed 事件。

若 I/O 作業同步完成,則為 false。 在這個情況下,就不會引發與 e 參數有關的 Completed 事件,而在方法呼叫傳回後會立即檢查做為參數傳遞的 e 物件,以擷取作業的結果。

例外狀況

e 參數上的 BufferBufferList 屬性必須參考有效的緩衝區。 這兩個屬性可能有一個已經設定,但不會同時都已設定。

通訊端作業已使用 e 參數內指定的 SocketAsyncEventArgs 物件正在進行中。

尚未透過 SocketAccept()AcceptAsync(SocketAsyncEventArgs) 方法取得 BeginAccept,或尚未連接。

備註

方法 SendAsync 可用來從連接導向套接字上的一或多個緩衝區寫入傳出數據。 不過,這個方法也可以在連線作業上指定遠端主機的無連線套接字上使用。

方法會SendAsync啟動異步傳送作業至在 、AcceptAsyncBeginAcceptBeginConnectConnectConnectAsync 方法中Accept建立的遠端主機。

需要物件的下列屬性和事件 System.Net.Sockets.SocketAsyncEventArgs ,才能成功呼叫這個方法:

呼叫端可以在呼叫 SendAsync 方法之前,將 屬性設定SocketAsyncEventArgs.UserToken為任何所需的用戶狀態物件,以便在回呼方法中擷取資訊。 如果回呼需要比單一物件更多的資訊,則可以建立小型類別,以將其他必要狀態資訊保留為成員。

如果您未第一次呼叫 Accept、、、BeginAcceptConnectBeginConnectConnectAsyncAcceptAsync此方法SendAsync將會擲回例外狀況。

SendAsync呼叫 方法可讓您在個別的執行線程內傳送數據。

針對訊息導向套接字,請勿超過基礎 Windows 套接字服務提供者的訊息大小上限。 如果數據太長而無法透過基礎服務提供者傳遞,則不會傳輸任何數據,而且 SendAsync 方法會擲 SocketException 回 ,並將 SocketAsyncEventArgs.SocketError 設定為原生 Winsock WSAEMSGSIZE 錯誤碼 (10040) 。

請注意,方法成功完成 SendAsync 並不會指出已成功傳遞數據。

另請參閱

適用於

.NET 10 和其他版本
產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0