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要用于此异步套接字作的对象。

返回

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

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

例外

参数Buffer上的BufferListe属性必须引用有效的缓冲区。 可以设置其中一个或另一个属性,但不能同时设置这两个属性。

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

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

注解

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

该方法SendAsync将启动异步发送操作,以发送到在 、、AcceptAcceptAsyncBeginAcceptBeginConnectConnect方法中建立的ConnectAsync远程主机。

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

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

如果不首先调用SendAsync、、AcceptAcceptAsyncBeginAcceptBeginConnectConnect此方法ConnectAsync将引发异常。

调用该方法 SendAsync 使你能够在单独的执行线程内发送数据。

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

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

适用于

另请参阅