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)

Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs

在连接的套接字上发送数据。

public System.Threading.Tasks.ValueTask<int> SendAsync (ReadOnlyMemory<byte> buffer, System.Threading.CancellationToken cancellationToken = default);
member this.SendAsync : ReadOnlyMemory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendAsync (buffer As ReadOnlyMemory(Of Byte), Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

参数

buffer
ReadOnlyMemory<Byte>

要发送的数据的缓冲区。

cancellationToken
CancellationToken

可用于取消异步操作的取消标记。

返回

以发送的字节数完成的异步任务。

例外

取消令牌已取消。 此异常存储在返回的任务中。

适用于

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

Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs

在连接的套接字上发送数据。

public:
 System::Threading::Tasks::Task<int> ^ SendAsync(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public System.Threading.Tasks.Task<int> SendAsync (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.SendAsync : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> System.Threading.Tasks.Task<int>
Public Function SendAsync (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Task(Of Integer)

参数

buffers
IList<ArraySegment<Byte>>

要发送的数据的缓冲区列表。

socketFlags
SocketFlags

发送数据时将使用的 SocketFlags 值的按位组合。

返回

以发送的字节数完成的异步任务。

例外

buffersnull

尝试访问套接字时出错。

注解

此方法将存储在任务中,它返回该方法的同步对应项可能引发的所有非使用异常。 如果异常存储在返回的任务中,则在等待任务时将引发该异常。 使用异常(如 ArgumentException)仍会同步引发。 有关存储的异常,请参阅 引发的 Send(IList<ArraySegment<Byte>>, SocketFlags)异常。

适用于

SendAsync(ArraySegment<Byte>, SocketFlags)

Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs

在连接的套接字上发送数据。

public:
 System::Threading::Tasks::Task<int> ^ SendAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public System.Threading.Tasks.Task<int> SendAsync (ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.SendAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags -> System.Threading.Tasks.Task<int>
Public Function SendAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags) As Task(Of Integer)

参数

buffer
ArraySegment<Byte>

要发送的数据的缓冲区。

socketFlags
SocketFlags

发送数据时将使用的 SocketFlags 值的按位组合。

返回

以发送的字节数完成的异步任务。

例外

尝试访问套接字时出错。

适用于

SendAsync(ReadOnlyMemory<Byte>, SocketFlags, CancellationToken)

Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs

在连接的套接字上发送数据。

public System.Threading.Tasks.ValueTask<int> SendAsync (ReadOnlyMemory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Threading.CancellationToken cancellationToken = default);
member this.SendAsync : ReadOnlyMemory<byte> * System.Net.Sockets.SocketFlags * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendAsync (buffer As ReadOnlyMemory(Of Byte), socketFlags As SocketFlags, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

参数

buffer
ReadOnlyMemory<Byte>

要发送的数据的缓冲区。

socketFlags
SocketFlags

发送数据时将使用的 SocketFlags 值的按位组合。

cancellationToken
CancellationToken

可用于取消异步操作的取消标记。

返回

以发送的字节数完成的异步任务。

例外

尝试访问套接字时出错。

取消令牌已取消。 此异常存储在返回的任务中。

适用于

SendAsync(IList<ArraySegment<Byte>>)

Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs

在连接的套接字上发送数据。

public:
 System::Threading::Tasks::Task<int> ^ SendAsync(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public System.Threading.Tasks.Task<int> SendAsync (System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.SendAsync : System.Collections.Generic.IList<ArraySegment<byte>> -> System.Threading.Tasks.Task<int>
Public Function SendAsync (buffers As IList(Of ArraySegment(Of Byte))) As Task(Of Integer)

参数

buffers
IList<ArraySegment<Byte>>

要发送的数据的缓冲区列表。

返回

以发送的字节数完成的异步任务。

例外

buffersnull

尝试访问套接字时出错。

注解

此方法将存储在任务中,它返回该方法的同步对应项可能引发的所有非使用异常。 如果异常存储在返回的任务中,则在等待任务时将引发该异常。 使用异常(如 ArgumentException)仍会同步引发。 有关存储的异常,请参阅 引发的 Send(IList<ArraySegment<Byte>>)异常。

适用于

SendAsync(ArraySegment<Byte>)

Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs

在连接的套接字上发送数据。

public:
 System::Threading::Tasks::Task<int> ^ SendAsync(ArraySegment<System::Byte> buffer);
public System.Threading.Tasks.Task<int> SendAsync (ArraySegment<byte> buffer);
member this.SendAsync : ArraySegment<byte> -> System.Threading.Tasks.Task<int>
Public Function SendAsync (buffer As ArraySegment(Of Byte)) As Task(Of Integer)

参数

buffer
ArraySegment<Byte>

要发送的数据的缓冲区。

返回

以发送的字节数完成的异步任务。

例外

尝试访问套接字时出错。

适用于

SendAsync(SocketAsyncEventArgs)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

将数据异步发送到连接的 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 对象。

返回

如果 I/O 操作挂起,则为 true。 操作完成时,将引发 e 参数的 Completed 事件。

如果 I/O 操作同步完成,则为 false。 在这种情况下,将不会引发 e 参数的 Completed 事件,并且可能在方法调用返回后立即检查作为参数传递的 e 对象以检索操作的结果。

例外

e 参数的 BufferBufferList 属性必须引用有效的缓冲区。 可以设置这两个属性中的某一个,但不能同时设置这两个属性。

已经在使用 e 参数中指定的 SocketAsyncEventArgs 对象执行套接字操作。

Socket 尚未连接或者尚未通过 Accept()AcceptAsync(SocketAsyncEventArgs)BeginAccept 方法获得。

注解

方法 SendAsync 用于从面向连接的套接字上的一个或多个缓冲区写入传出数据。 但是,此方法也可用于在连接操作上指定远程主机的无连接套接字上。

方法SendAsync启动对在 、、、AcceptAsyncConnectBeginAcceptBeginConnect、 或 ConnectAsync 方法中建立的远程主机的Accept异步发送操作。

若要成功调用此方法, System.Net.Sockets.SocketAsyncEventArgs 对象上需要以下属性和事件:

调用方可以在调用SendAsync方法之前将 SocketAsyncEventArgs.UserToken 属性设置为所需的任何用户状态对象,以便可在回调方法中检索信息。 如果回调需要比单个对象更多的信息,则可以创建一个小类来保存其他所需的状态信息作为成员。

如果不首先调用 Accept、、、BeginConnectBeginAcceptConnectConnectAsyncAcceptAsync方法SendAsync将引发异常。

SendAsync通过调用 方法,可以在单独的执行线程中发送数据。

对于面向消息的套接字,请勿超过基础 Windows 套接字服务提供程序的最大消息大小。 如果数据太长而无法通过基础服务提供程序以原子方式传递,则不会传输任何数据,并且 SendAsync 方法会引发 , SocketException 并将 SocketAsyncEventArgs.SocketError 设置为本机 Winsock WSAEMSGSIZE 错误代码 (10040) 。

请注意, SendAsync 成功完成方法并不表示数据已成功传递。

另请参阅

适用于