关于服务端TCP连接数的问题,在网上很多都是错误的答案,我这里要澄清一下这个问题,因为我也被很多网上的答案误导。
TCP服务端的连接数于端口个数无关,这个网上的误导答案很多。
TCP服务端,需要的只是一个监听端口,无论多少客户端连接上来,始终都是这个端口对外。服务端accept返回的socket只是通过客户端的ip跟端口来区分TCP连接的。
所有客户端的数据都是通过那个监听端口获取的。这个是操作系统底层的实现,抽象出来就是服务端只需要一个端口。所以理论上的最大连接数会非常大,ip * 端口数。
但是由于系统会受到内存等因数的限制,到不了这个数字。
客户端才与端口数有关,一般系统的端口数是0-65535.实际上可以绑定的端口只有1024-65535,因为0-1024被系统预定了。所以客户端可以绑定的端口数会更少。
总结:
TCP可以支持的最大连接数可以认为无上限,只是受到服务器配置影响。客户端才会受端口数影响,因为每个客户端发起连接时都需要绑定端口。