关于异步Socket的一点疑问

Eason0807 2019-12-01 11:09:00
bool Socket.AcceptAsync(SocketEventArgs ags)这个方法,微软的文档说如果同步完成的话则返回false,不会引发SocketEventArgs.Completed事件;

我不明白的是,什么情况是会同步完成??
...全文
124 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
github_36000833 2019-12-02
  • 打赏
  • 举报
回复
另外,Socket支持连接队列。 比如socket.Listen(backlog: 5);允许连接队列里最多5个连接请求排队。 如果你AcceptAsync处理了慢了,可能连接队列里会有为处理的连接请求。 在这种情况下,下一个AcceptAsync同步返回是很有可能的。
github_36000833 2019-12-02
  • 打赏
  • 举报
回复
文档的逻辑也没错:接受已经完成,就不用再引发事件。 问题是,即使我们目前没有观测到Socket.AcceptAsync同步完成的情况,也顶不住以后微软进行优化同步完成。 因此从开发的角度,还是要处理同步完成的场景。
Eason0807 2019-12-02
  • 打赏
  • 举报
回复
引用 2 楼 github_36000833 的回复:
另外,Socket支持连接队列。 比如socket.Listen(backlog: 5);允许连接队列里最多5个连接请求排队。 如果你AcceptAsync处理了慢了,可能连接队列里会有为处理的连接请求。 在这种情况下,下一个AcceptAsync同步返回是很有可能的。
你说的这个有道理,我没遇到过连接请求排队的情况

111,098

社区成员

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

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

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