热情软件屋

 

VB的WINSOCK 控件能不能写同时接受多用户连入的服务器


编号:QA001775
建立日期: 1999年9月25日 最后修改日期:1999年9月25日
所属类别:

高晓龙:
    操作系统:NT
    工具:vb
    问题:我公司正在开发一套 client/server系统,我负责server,server端要求采用TCP/IP方式接受client的连入,client在server上各自 操作各自的工作互不干扰。我遇到的困难是我不知道用VB的WINSOCK 控件能不能写一个同时接受8000用户连入的服务器,因为VB是单线程的,我怕连入的用户多后服务器端会因其中一个用户的工作处理时间过长后,无法及时的处理其他更多用户的请求。服务器端能不能用多线程方式,如果行用VB 该怎样做或请专家指点其它的方法。万分 感谢。

回答:

    我以前做过有关WINSOCK控件的通讯程序,可能会有一些帮助。
     1、先建一VB程序,在其中建一个WINSOCK的控件数组。
     2、用WINSOCK1(0)专门侦听信息。
     3、当有一个连接请求时,LOAD WINSOCK1(CURRENTCONNECTNUM),其中CURRENTCONNECTNUM为当前连接数。而WINSOCK1(0)仍执行侦听任务。
     4、当程序的连接数达到一定数目时,关闭WINSOCK1(0)的侦听功能。并启动同一程序。当某一连接断开时,再启动WINSOCK1(0)的端口侦听功能。如果无法继续侦听,则不关闭侦听功能,但要注意,不要每次有连接来就打开一个程序。
     5、第二个程序启动时,使用另一端口侦听,以免和第一程序发生碰撞,端口号可从文件或注册表中读取。以此类推,8000个连接可分成若干个组来并行处理,相信会好一些。
     6、要注意的是,断开连接后,要UNLOAD WINSOCK1(CURRENTCONNECTNO),否则再连接会出错。 以上是我的一些浅见,希望对问题有所帮助。(我的程序是在VB5下做的。)
    相关程序可参考VB下的WINSOCK,不过那是单工,我编的程序是双工的。

此问题由john回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio