加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为什么System.Net.Sockets.Socket.AcceptAsync在长时间不

发布时间:2020-12-15 07:53:28 所属栏目:百科 来源:网络整理
导读:看来,当您使用有效的SocketAsyncEventArgs调用Socket.AcceptAsync并正确装配SocketAsyncEventArgs.Completed事件并且很长一段时间内没有接受任何连接时它只会重置连接.虽然,我的Socket.ReceiveTimeout和Socket.SendTimeout都是零. 我不确定如何设置接受连接
看来,当您使用有效的SocketAsyncEventArgs调用Socket.AcceptAsync并正确装配SocketAsyncEventArgs.Completed事件并且很长一段时间内没有接受任何连接时它只会重置连接.虽然,我的Socket.ReceiveTimeout和Socket.SendTimeout都是零.

我不确定如何设置接受连接的超时,即使这是一个好主意.有没有人有一个解决方法,也许有一些信息,为什么这是默认行为?

我在Microsoft Connect上查看filed a bug report是否有任何理由说明为什么超时期限不稳定.有时它会在五分钟内超时,其他时间则超过两小时.

解决方法

在玩了一下之后,我发现单个SYN – > SYN-ACK – > RST序列将引发SocketAsyncEventArgs.Completed事件并导致SocketAsyncEventArgs.SocketError属性成为SocketError.ConnectionReset.看来这是预期的行为,但它肯定是一个问题,应该更好地记录.

任何端口扫描您的服务器并进行半开放式SYN扫描都会产生类似的流量并导致同样的问题.为了防止软件中的拒绝服务漏洞,应该处理这种特殊情况.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读