就是说采用c/s结构时
一台win2000server能允许多少个client同时跟他建立连接?
这个有没有上限?
如果有,这个上限跟什么有关?
怎样提升这个上限?

解决方案 »

  1.   

    转:不知对不对如何修改计算机系统的网络最大连接数
    我们经常要使用网络中的多台计算机处理同一个事情,那么就会遇到计算机(Win200、WinXP SP2系统)超出最大网络连接数的问题,大家知道,为了防范蠕虫病毒的传播和攻击,Win2000、Windows XP SP2等系统将并发线程最多限制为10个(正常状态下无法修改)。SP2利用Messages动态链接库,来实时监控每个进程的并发线程数目,一旦它发现某进程的线程数超过10个,就会屏蔽掉部分线程。这样,虽然可以防范一些蠕虫病毒的攻击,加强系统安全,但是也为我们的正常使用带了一些负面影响。我们可以采取以下对策,来突破TCP并发连接数,从而提高Win2000、WinXP SP2系统的最大连接数问题。
      一、注册表修改法(对Win2000系统有效)
    为了突破计算机网络最大连接数的限制,网上曾经流传过一种修改注册表的方法,操作步骤如下:
    单击“开始”/运行,输入Regedit打开注册表,定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下,修改的“TcpNumConnections”的键值,将之由10改为150,即设置TCP最大并发连接数为150。(但本方法对WinXP SP2系统无效)
      二、使用工具来替换Tcpip.Sys(适用于WinXP SP2系统)
    方法是修改Windows XP SP2的系统文件Tcpip.sys。Tcpip.sys是Windows XP SP2重要的系统文件,位于“C:\Windows\system32\drivers目录下。
    该文件由于平时受到系统保护,所以正常情况下你是无法替换它的,必须在安全模式或纯DOS模式下才能替换,建议你使用以下专门工具(EVID)、来替换“Tcpip.sys”文件。
    操作步骤如下:请从“高师主页_万州教研信息技术专家工作室”(www.wzqjks.com/gjzh)或其它网站下载替换工具(EVID),用它来修改系统文件Tcpip.sys最大安全并发连接限制;修改前,请一定备份您计算机的C:\Windows\system32\drivers\Tcpip.sys文件,以防不测。
    接下来,双击打开下载文件ZIP压缩包,运行其中的替换工具EvID4226Patch.exe,随之将弹出一个命令行提示符窗口,首先显示Windows当前的Tcpip.sys文件版本,以及并发连接的限制数值(默认为10);接着询问你是否将连接数限制在50(如下图1),你可以选择“Yes/No/Change”,如果你输入“Y”,则会将并发连接数改为“50”,如果想改为其他数(例如150),可以在提示符后输入“c”,然后输入最大的并发连接数(例如150)回车,最后在提示符下输入“Y”并回车,这样就替换了Tcpip.sys文件;Tcpip.sys文件被替换后,随之会弹出系统文件保护对话框,你可以点击“取消”按钮,然后点击“是”按钮,重新启动后,Tcpip.sys文件的替换就大功告成了。
    现在你的最大并发连接数已超过10个,达到了150个,因此Windows XP SP2的多线程访问速度得到了提升,当你用FlashGet、BT等多线程下载时,就不会感到网络带宽的限制了。
    三、DOS下修改Tcpip.sys文件
    以上替换程序EvID4226Patch.exe也可以在DOS下使用,方法是:首先把EvID4226Patch.exe拷贝到C盘根目录下;然后再进入DOS模式,进入C盘根目录,输入命令EvID4226Patch/L=$n$/w=C:\WINDOWS\system32\drivers/L=tcpip.sys即可修改Tcpip.sys文件。
    注意:以上$n$为你要设置的最大安全连接数,假如要把最大并发连接数设置为150个线程,那么输入命令EvID4226Patch/L=150/w=C:\WINDOWS\system32\drivers/L=tcpip.sys即可。
    特别提示:以上几种方法虽然提高了Windows XP SP2的多线程访问速度,但却降低了SP2的安全性能,如果你的电脑感染了病毒或木马,过多地启用新线程,会加速病毒和木马的蔓延,因此你在追求网络最大连接数的同时,也要注意网络安全。建议你及时安装升级杀毒软件和防火墙,如果是普通用户,可以利用上面的方法,将TCP最大并发连接数设置为10~30。
    四、换操作系统,换为:win2000Server或者win2003Server
    (END)
      

  2.   

    谢谢楼上的
    不过我要的不是这个
    我想知道的是一台服务器最多能让多少个客户机和他建立tcp连接
    如qq游戏的大厅,最多能允许多少个客户机连接呢?
    这个应该有上限的吧?
      

  3.   

    EvID4226Patch.exe 下载下来看看就知道了.
      

  4.   

    理论上
    一个IP地址和端口捆绑
    可以同时在线的连接为65535
    但是去掉1024保留端口,去掉你实际监听的端口,去掉-1
    可以使用的大概是64000
    事实上是否能达到我没测试过
    一般这和操作系统有关系,SERVER版本应该对连接没有限制
    象XP或者2000的PROFESSIONAL SP4等,对连接有限制,并非线程限制,而是TCP连接限制
      

  5.   

    哦,忘了说明
    我针对的是TCP
    UDP没有这个限制的
      

  6.   

    你说是自己的应用程序?默认的本机的端号分配是1024到5000,可以修改5000这个上限值。
    一台服务器应该能够并到65000左右吧。
    不过,这么多连接的额外开销也太大了吧,如果连接太多,可以考虑UDP方式。
      

  7.   

    我认为你们理解的有问题。
    一个TCP连接其实是指四个元素:本地的IP+端口和对端的IP+端口。所以即便本机只有一个端口,
    也是可以建立很多连接的,和端口数量限制其实没有任何关系!UNIX网络编程解释的非常清楚。建立连接数量的限制,真正的因素是内存和OS的限制,如未分页内存的数量。windows网络编程里面有叙述,如下:As you can see, the amount of non-paged pool each connection uses is not great; however, as the number of clients connecting increases, the amount of non-paged pool the server uses can be significant. For example, consider a server running Windows 2000 (or greater) with 1 GB physical memory. For this amount of memory there will be 256 MB set aside for the non-paged pool. In general, the amount of non-paged pool allocated is one quarter the amount of physical memory with a 256 MB limit on Windows 2000 and later versions and a limit of 128 MB on Windows NT 4.0. With 256 MB of non-paged pool, it is possible to handle 50,000 or more connections, but care must be taken to limit the number of overlapped operations queued for accepting new connections as well as sending and receiving on existing connections. In this example, the connected sockets alone consume 75 MB on non-paged pool (assuming each socket uses 1.5 KB of non-paged pool as mentioned). Therefore, if the zero-byte overlapped receive strategy is used, then a single IRP is allocated for each connection, which uses another 25 MB of non-paged pool.一般限制是物理内存的1/4,1GB内存的机器,大约可以处理5万个连接,但是还需要考虑每个连接的具体情况,如是高流量,还是高并发。如果超过了系统的资源限制,API调用会出现WSAENOBUFS错误。--------------------------
    国内专业的ACE网络编程、开发论坛开通:
    www.acejoy.com 
    www.acedevelop.com
    涉及ACE使用和开发,中间件、服务器端软件的设计,P2P技术,
    socket网络编程、应用开发等内容。
    欢迎加入,大家一起交流、学习成长!
      

  8.   

    acejoy 说的很对!! 服务器建立接收再多的连接,也只占用一个端口, 理解错误的人要回去补充下基础知识!
      

  9.   

    (好像)在MSDN上说的,server2003支持20万个长连接。不过,刚找了一下没有找到。acejoy说得正确,最主要其实是两个限制
    1:Locked page, 锁定页面
    2:non-paged pool 不可分页内存也就是说,这个连接依赖于物理内存,因为每个TCP连接,都需要在内核中分配一些资源,
    而这个资源是不能够分页的,所以,理论上说,物理内存越大,连接越多。而上述的200000个长连接,可能就是系统的一些限制了。
      

  10.   

    楼上的兄弟,能否帮我解释下“non-paged pool 不可分页内存”,我不是很懂