Socket.SendAsync(SocketAsyncEventArgs) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将数据异步发送到连接的 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
参数
SocketAsyncEventArgs要用于此异步套接字作的对象。
返回
e事件。
false 如果 I/O作同步完成,则为 。 在这种情况下, Completed 不会引发参数上的 e 事件,在 e 方法调用返回以检索作结果后,可以立即检查作为参数传递的对象。
例外
参数Buffer上的BufferList或e属性必须引用有效的缓冲区。 可以设置其中一个或另一个属性,但不能同时设置这两个属性。
套接字操作已在使用 SocketAsyncEventArgs 参数中指定的 e 对象进行中。
注解
该方法 SendAsync 用于在面向连接的套接字上从一个或多个缓冲区写入传出数据。 但是,此方法还可用于在连接操作上指定远程主机的无连接套接字。
该方法SendAsync将启动异步发送操作,以发送到在 、、AcceptAcceptAsync、 BeginAcceptBeginConnect或Connect方法中建立的ConnectAsync远程主机。
若要成功调用此方法,需要对象上的 System.Net.Sockets.SocketAsyncEventArgs 以下属性和事件:
SocketAsyncEventArgs.Buffer 或 SocketAsyncEventArgs.BufferList
SocketAsyncEventArgs.Count 如果 SocketAsyncEventArgs.Buffer 已设置
SocketAsyncEventArgs.Offset 如果 SocketAsyncEventArgs.Buffer 已设置
调用方可以在调用SocketAsyncEventArgs.UserToken该方法之前将SendAsync属性设置为所需的任何用户状态对象,以便在回调方法中检索信息。 如果回调需要比单个对象更多的信息,则可以创建一个小类来将其他必需的状态信息保存为成员。
如果不首先调用SendAsync、、Accept或AcceptAsyncBeginAcceptBeginConnect,Connect此方法ConnectAsync将引发异常。
调用该方法 SendAsync 使你能够在单独的执行线程内发送数据。
对于面向消息的套接字,不要超过基础 Windows 套接字服务提供程序的最大消息大小。 如果数据太长而无法通过基础服务提供商以原子方式传递,则不会传输任何数据,并且 SendAsync 该方法会引发 SocketException 设置为 SocketAsyncEventArgs.SocketError 本机 Winsock WSAEMSGSIZE 错误代码 (10040) 的方法。
请注意,该方法的 SendAsync 成功完成并不指示数据已成功传递。