首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SendAsync什么时候完成?

SendAsync什么时候完成?
EN

Stack Overflow用户
提问于 2011-01-04 19:45:38
回答 2查看 1.3K关注 0票数 1

有没有一种方法可以确保所有的消息字节都已经用SendAsync发送了,这个方法的回调中没有提供任何信息,那么怎么能假设所有的消息都已经发送了呢?在发送操作中,我们可以使用套接字发送的最大消息大小是多少?是否存在任何限制,或者我们可以根据需要发送大量数据??

感谢您的清晰回复;)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-04 19:51:57

如果在没有错误指示的情况下调用回调,则消息已发送。

票数 0
EN

Stack Overflow用户

发布于 2011-05-15 09:51:19

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

代码语言:javascript
复制
    private void SendSAEA_Completed(object sender, SocketAsyncEventArgs sendSAEA)
    {        
            if (sendSAEA.BytesTransferred == 0 || sendSAEA.SocketError != SocketError.Success)
            {
                Close();
            }
            else
            {
                 // Process sendSAEA.BytesTransferred
            }
     }

此外,根据MSDN,我们可以在一次发送操作中发送缓冲区:

默认情况下,您可以使用以下命令控制缓冲区大小: Socket.SendBufferSize.

  • The is 8192。

(http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.sendbuffersize.aspx)

并且,对于SendAsync:

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

(http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.sendasync.aspx)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4593215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档