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);

参数

buffer
ReadOnlyMemory<Byte>

要发送的数据的缓冲区。

cancellationToken
CancellationToken

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

返回

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

例外

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

适用于

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

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<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)

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

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

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)

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);

参数

buffer
ReadOnlyMemory<Byte>

要发送的数据的缓冲区。

socketFlags
SocketFlags

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

cancellationToken
CancellationToken

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

返回

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

例外

尝试访问套接字时出错。

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

适用于

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

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<byte>> buffers);

参数

buffers
IList<ArraySegment<Byte>>

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

返回

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

例外

buffersnull

尝试访问套接字时出错。

注解

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

适用于

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

SendAsync(ArraySegment<Byte>)

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

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

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

参数

buffer
ArraySegment<Byte>

要发送的数据的缓冲区。

返回

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

例外

尝试访问套接字时出错。

适用于

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

SendAsync(SocketAsyncEventArgs)

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

将数据异步发送到连接的 Socket 对象。

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 对象执行套接字操作。

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 成功完成并不表示数据已成功传递。

另请参阅

适用于

.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