关于异步Socket的一点疑问

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

我不明白的是,什么情况是会同步完成??
...全文
56 点赞 收藏 3
写回复
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同步返回是很有可能的。
你说的这个有道理,我没遇到过连接请求排队的情况
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.5w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告