Socket异步接受/发送函数 Send/ReceiveAsync在什么情况下触发完成事件

kn_c 2015-03-13 10:51:04
不考虑在开始异步前,链接关闭(否者在调用的时候会抛出异常)。
调用返回
1.FALSE 即同步完成
为什么会同步完成?是在开始调用时,已经有数据到了缓冲区?
2.TRUE 开始异步
在什么情况下compeled事件会触发?
MSDN上有段说明
For byte stream-style sockets, incoming data is placed into the buffer until the buffer is filled, the connection is closed, or the internally buffered data is exhausted.
...全文
754 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
DNN-2017 2016-01-27
  • 打赏
  • 举报
回复
如果同步完成是不会触Completed事件的,需要自己手动调用处理。
kn_c 2015-03-13
  • 打赏
  • 举报
回复
引用 3 楼 Z65443344 的回复:
FALSE=0 TRUE=1 你不说到底是什么属性,或者什么函数的返回值是0或1 单纯的问0的时候是什么样,1的时候是什么样 这真心没法回答
public bool ReceiveAsync( SocketAsyncEventArgs e )
kn_c 2015-03-13
  • 打赏
  • 举报
回复
引用 4 楼 sp1234 的回复:
不论是返回true还是false,都会触发完成事件。如果你以为返回true就不会触发完成事件了,那么可能是你多虑了,或者也可能是msdn的文档有问题(在通讯语句方面,msdn文档写的很不好)。你应该以自己的测试为准。 返回true,表示你发出命令直接就执行了。返回false,表示你发出的命令没有直接执行,而是要等待几毫秒之后才执行。
MSDN: Return Value Type: System.Boolean Returns true if the I/O operation is pending. The SocketAsyncEventArgs.Completed event on the e parameter will be raised upon completion of the operation. Returns false if the I/O operation completed synchronously. In this case, The SocketAsyncEventArgs.Completed event on the e parameter will not be raised and the e object passed as a parameter may be examined immediately after the method call returns to retrieve the result of the operation.
本拉灯 2015-03-13
  • 打赏
  • 举报
回复
引用 2 楼 code_xxl 的回复:
额,没描述清楚? 比如第二点,什么情况下会触发compeled事件,根据MSDN的意思 用户缓冲区满了,内部缓冲区满了,连接关闭了,是这样理解?
不是满不满,这个没有限定的。你也没必要纠结这问题呀。。TCP是长连接,他不会关闭。关闭就断开了。
  • 打赏
  • 举报
回复
不论是返回true还是false,都会触发完成事件。如果你以为返回true就不会触发完成事件了,那么可能是你多虑了,或者也可能是msdn的文档有问题(在通讯语句方面,msdn文档写的很不好)。你应该以自己的测试为准。 返回true,表示你发出命令直接就执行了。返回false,表示你发出的命令没有直接执行,而是要等待几毫秒之后才执行。
於黾 2015-03-13
  • 打赏
  • 举报
回复
FALSE=0 TRUE=1 你不说到底是什么属性,或者什么函数的返回值是0或1 单纯的问0的时候是什么样,1的时候是什么样 这真心没法回答
kn_c 2015-03-13
  • 打赏
  • 举报
回复
额,没描述清楚? 比如第二点,什么情况下会触发compeled事件,根据MSDN的意思 用户缓冲区满了,内部缓冲区满了,连接关闭了,是这样理解?
本拉灯 2015-03-13
  • 打赏
  • 举报
回复
写啥问题没看懂。

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧