IOCP模型下,为什么单机并发可以超过65535?

[开发] 季雨林 2018/4/20 10:04:05

        首先,题目里误导了大家,之所以这么写,就是为了纠正大家观点。由于我曾经开发过一套高并发GPS系统,遇到过高并发问题,因此写此文解答下那时候很多人的错误结论。

        很多人认为,windows系统下,最多可用端口数为65535,并且由于系统自身也得使用某些端口,因此1024以下的服务几乎不去使用。于是就在这个时候,windows系统最大支持65535的并发连接的观点就被很多人接受了。这里,我要说的是TCP连接,用tcp长连接来说明问题。


  • 连接的方向:从windows系统发起

        刚才提到,windows系统最多支持65535,这个说法一点没错,因为这个是已windows系统的连接角度说起的。比如说:在一个windows操作系统下,一个tcp客户端工具,对外尽可能多的发起tcp长连接。那么会发现,最多可建立的连接数就是65535。这其中还得包括系统自身正在使用的端口。


  • 连接的方向:使用windows系统接收

        这里要说的,典型的例子就是大部分服务器的做法,仔细想一下,一台简单的web服务器,是不是就是只用一个80端口对外提供服务?没错,这就是从从windows接收连接的角度看问题了,这个情况下,是不是只要服务器没死机,就可以源源不断的获取从外部发来的连接?想明白这一点,题目的问题就很明了了。socket服务器可以超过65535TCP长连接!


看似很简单的问题,由于平常思考的时候容易遗漏关键条件(连接方向)。导致了很多人误以为windows平台只能建立65535个连接。



原文地址: https://www.opengps.cn/Blog/View.aspx?id=67 文章的更新编辑依此链接为准。欢迎关注源站原创文章!


鲁ICP备14008001号-2