当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 怎么得到服务器的信息? 比如服务器的域名,ip 深一点的就和动网论坛的管理里一样,能到 服务器类型,脚本解释引擎, 站点物理路径,数据库地址 fso文本读写,数据库使用 jmail组件支持,cdonts组件支持 等信息 ......
    摘要: 我用vc编译一个c的程序,这个程序里面有socket,老是有类似的错误 d:\program files\microsoft visual studio\vc98\include\winsock.h(49) : error c2011: fd_set : struct type redefinition 这是一个系统的函数出错,我想是不是不支持socket的原因,请问在c下怎么支持sock......


初做服务端程序关于线程方面的一些问题

小弟初次做一个服务端程序,发现效率比较低下,比如处理一个SOCKET连接的通信需要100毫秒,而处理十个就要1000毫秒。。。  
  我是侦听到一个连接请求就使用MFC的CAsyncSocket开一个连接对象,然后响应OnReceive进行处理。请问:我是不是应该开多线程处理,一般象这种服务程序是如何解决这些问题的,能够容纳多少个线程?还有,这样开多线程,一有处理CPU占用老是100%,有没有好的解决方法?  
  小弟是个菜鸟,希望大侠们多多指教,先行谢过了!

NO.1   作者: wj_xiazi

根据你所说的。我猜测你先开始用的是一个TCP连接的Socket。收到一个连接请求之后,我不明白你为什么要“使用MFC的CAsyncSocket开一个连接对象”?     ,你新建一个对象,要调用构造函数,并初始化。用的时间当然要长了。  
  你不知道Socket有accept函数么?  
        还有,开新线程要谨慎,要看看性能的瓶颈在哪里。如果在套接字,那就多开套接字。如果在处理信息部分,那就可以多处理消息的开线程。

NO.2   作者: daphant

对呀!服务器端就是为每个连接开一个线程来处理的,首先CAsyncSocket本身就是多线程的,OnAccept的时候每收到一个新的连接,就开一个新的线程。

NO.3   作者: fantiyu

CAsynSocket是单线程的,只是每一个连接添加一个对象而已  
   
  线程要你自己写  
  不过不推荐线程方法。因为无论你线程再多,同时能够执行的线程数取决于你CPU的数量  
   
  而且,创建/释放线程资源是很浪费系统的

NO.4   作者: newlife2002_313

CAsynSocket隐藏了一个消息处理窗口,OnReceive,OnAccept等都是窗口消息响应函数。  
  当你创建CAsynSocket对象后,它就有一套自己的消息循环,所以,你可以把它理解为多线程,因为一般情况下,不影响主界面消息循环,除非CAsynSocket对象消息特别多以至于来不及处理,这种情况繁忙的服务器很容易发生。  
   
      要想写高效率的服务器,建议用异步I/O,或完成端口。

NO.5   作者: guanshan

开那么多线程的话不是叫别人来黑你嘛..........  
   
  你的CPU的资源是有限滴


    摘要: 总不能 jframe frame= panel.getparent.getparent....... 这样下去吧? ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE