如何做才能使支持的人数越多,前提是使用TCP协议?

解决方案 »

  1.   

    一个ip有65535个端口
    计算机可以绑定多个ip
    明白了不?
      

  2.   

    和端口无关吧
    又不是udp 协议的 
    只要你的内存够大就可以生成无数个 个人观点哈!
      

  3.   

    我使用的是TCP协议,一个IP地址,一个端口,这样一个进程最大可以承载多少人?
      

  4.   

    我使用的是TCP协议,服务器端一个IP地址,一个端口,这样一个进程最大可以承载多少人(C/S聊天软件,服务器转发模式)?
      

  5.   

    楼主,请问你也是用VB做的使用TCP协议开发C/S聊天程序吗?实在是太好了!我现在的毕业设计也是做这个啊!但我有些问题不知道怎么实在,可以帮帮我吗??我现在不知道怎么实现其中的客户端向服务器端发送请求以实现用户注册的功能,客户端显示在线用户的功能和FTP的上传及下载2个功能,请给点建议或帮我修改一下可以吗??我上传了我已经做的源程序。谢谢!!其他知道这方面的VB爱好者能帮忙是最好!!如果可以请加我QQ33768952联系我!!
      

  6.   

    和端口无关,侦听一有一个联接请求就创建一个Winsock (用数组)
    只要你的内存够大就可以生成无数个,还可以用动态方式,客户端下线了就关闭
    分配的Winsock 这样一般支持同时在线人数就更多了,但实际上的人数据
    就要跟据机器的配置,网络的好坏,Tcp 联接数多了很耗资源的,
    因为要维护联接
      

  7.   

    如果要支持多人同时在线,通常的做法是采用分布式处理,负载平衡,线程池技术
    一个控件最多也只支持65535(理论值),而且操作系统也只支持这么多个客户端同时连接(理论值)
    WINSOCK控件实现的原理(据我猜测):在接受一个连接时,会用一个线程来处理,然后接收到数据会产生控件事件,把数据写到缓冲区,然后触发事件,最后你的应用程序就会收到数据了,一个普通的PC机最多最多可能支持2000个线程吧,不然会崩的,当然还有速度的问题了1.如果要面向个客户端连接,就采用线程池技术,也就是说:一般情况下同时连接的情形并不多见,大多都是来了一批人,同时又会走一批人,这样程序总是忙着去创建线程,销毁线程,解决这种问题的方法是,预创建一批线程,当有一个客户端连接的时候,就选用一个已经创建好的线程,置其标志为占用,当其离开的时候,就置其标志为空闲,就为其它连接做好了准备。
    2.一台机子的资源总是有限的,当同时有上千人在线的时候,不可能让一个CPU来处理,不然的话,一个机子的操作系统就会在上千个线程之间进行来回线换,这样系统开销和延迟都很大,是行不通的,就采用分布式处理,负载平衡技术,也就是说:当有一百人连接的时候,就分摊在十台计算机上,每台处理十个,有一千个连接时,每台处理一百个
      

  8.   

    呵呵,我正好用VB做过大负荷的TCP/IP程序,将从1个客户端收来的数据转发到每个客户端,每秒发到每个客户端的数据量有10条左右,连了五、六个客户端,其它客户端就连不进来了,程序来不及响应连接请求了...郁闷
      

  9.   

    一个winsock的同时并发数是5个,超过5个就不行了.建议使用winsock数组来使用.
      

  10.   

    没有正解就我来说吧:
    从理论上来说,没有限制。这么说吧:用Winsock控件最多有32767个端口,因为
    LocalPort属性是Integer,但Integer的范围是-32768到32767之间,而端口的
    设置不能为0或负数,所以最多支持32767个端口。而控件可以列为数组,而控
    件数组最大的定义也就是32767个控件。如:Load Winsock(32768)肯定出错。
    因为Winsock控件创建服务后与客户端连接又可以启动另一个数组控件进行某个
    端口的侦听,所以以一个Winsock控件数组来计算一个端口的话,应该可以连接
    32767个客户端,但是如果增加控件组侦听其他的端口,可以计算成可连接
    32767的2次方个客户端,如果程序配合得恰当,可以采用多个控件组侦听一个
    端口的话,如一个名为Winsock1的控件组全部连接后就启用Winsock2进行新的
    侦听的话,那么就可能是个天文数字了。只要你的机器和带宽允许,多少连接
    都可以。但是这种看法也就是从理论上说说,从实际上还不能坑定。因为从计
    算的角度来看的确很夸张。呵呵。