C# SendAsync何时完成?

C# SendAsync何时完成?,c#,.net,sockets,asynchronous,C#,.net,Sockets,Asynchronous,你好 是否有办法确保所有消息字节都已通过SendAsync发送,此方法的回调中没有提供任何信息,因此如何假设所有消息都已发送??在发送操作中使用套接字可以发送的最大消息大小是多少?是否存在任何限制,或者我们可以发送所需大小的数据 感谢您的明确答复;) 如果调用回调时没有错误指示,则消息已发送。如果调用回调时没有错误指示,则消息已发送。是的,您需要的所有信息都在回调中: private void SendSAEA_Completed(object sender, SocketAsyncEv

你好
是否有办法确保所有消息字节都已通过SendAsync发送,此方法的回调中没有提供任何信息,因此如何假设所有消息都已发送??在发送操作中使用套接字可以发送的最大消息大小是多少?是否存在任何限制,或者我们可以发送所需大小的数据


感谢您的明确答复;)

如果调用回调时没有错误指示,则消息已发送。

如果调用回调时没有错误指示,则消息已发送。

是的,您需要的所有信息都在回调中:

    private void SendSAEA_Completed(object sender, SocketAsyncEventArgs sendSAEA)
    {        
            if (sendSAEA.BytesTransferred == 0 || sendSAEA.SocketError != SocketError.Success)
            {
                Close();
            }
            else
            {
                 // Process sendSAEA.BytesTransferred
            }
     }
此外,根据MSDN,我们可以在一次发送操作中发送缓冲区:

  • 您可以使用:Socket.SendBufferSize控制缓冲区大小
  • 默认值为8192
()

对于SendAsync:

对于面向消息的套接字,不要 超过邮件的最大邮件大小 底层Windows套接字服务 供应商。如果数据太长,无法 以原子方式通过底层 服务提供商,未提供任何数据 传输和SendAsync方法 使用 SocketAsyncEventArgs.SocketerError集合 到本机Winsock WSAEMSGSIZE 错误代码(10040)


()

是的,您需要的所有信息都在回调中:

    private void SendSAEA_Completed(object sender, SocketAsyncEventArgs sendSAEA)
    {        
            if (sendSAEA.BytesTransferred == 0 || sendSAEA.SocketError != SocketError.Success)
            {
                Close();
            }
            else
            {
                 // Process sendSAEA.BytesTransferred
            }
     }
此外,根据MSDN,我们可以在一次发送操作中发送缓冲区:

  • 您可以使用:Socket.SendBufferSize控制缓冲区大小
  • 默认值为8192
()

对于SendAsync:

对于面向消息的套接字,不要 超过邮件的最大邮件大小 底层Windows套接字服务 供应商。如果数据太长,无法 以原子方式通过底层 服务提供商,未提供任何数据 传输和SendAsync方法 使用 SocketAsyncEventArgs.SocketerError集合 到本机Winsock WSAEMSGSIZE 错误代码(10040)


()

显然,除非出现异常,否则它不会停止发送字节。也许信任该类型执行它的设计目的?显然,除非出现异常,否则它不会停止发送字节。也许你会相信它的设计目的?