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

 

    摘要: <iframe></iframe>是什么标签啊?有何用?怎么用? ......
    摘要: 别人访问我的网页时,我怎么样得到访问者的ip地址和浏览器?谢谢大家的支持和关心,用c#实现。 ......


SOCKET同时联接量过大的高难度问题(分数好商量)

我做的多线程SOCKET程序(搜索不同主机),比如:同时联192.168.1.1-255.255中的所有主机的21端口,发现:在98下只能开30个联接(线程),多了的话,就会联不上,而在2000下就没有限制,而XP或2003下也和98一样(好一点)。不知是系统问题,还是有什么开关我没打开。我用了select做超时联接(没用的话,同时联接数可以加高),望高手指点!

NO.1   作者: microyzy

win2k下好像有几千个呢,98好像也不止30个吧,记不清楚了,我觉得应该是你的代码的问题

NO.2   作者: microyzy

而且不需要那么多啊,可以每次10个,处理完再处理下10个啊

NO.3   作者: feeboby

连这么系统资源也会不够啊

NO.4   作者: wj_xiazi

我觉得不会是因为系统的原因。  
  想想嘛,QQ服务器上有好多的tcp连接,每一个tcp连接都是一个线程哦。

NO.5   作者: clack

你connect()别人,应该没有数量限制,我现在同时开100个线程都没问题;至于接收方则会受到listen(socket,backlog)中backlog大小的限制,如果它小了,接受方能同时建立的连接就小了,如果是这种情况,你的主动connect方会返回错误10061,connect   refused.检查你的返回值!

NO.6   作者: huzhenxing506

为什么不用完成端口和线程池,开那么多线程干嘛.

NO.7   作者: flinming

应该没有限制,是你的程序问题,我通常服务器同时都可以让100客户端连接

NO.8   作者: flinming

不过你是客户端,也没有必要一下子开那么多,就象楼上说的比如开10个轮流,这样是合理的  
  ,开太多,很耗资源。。。。。。。。。

NO.9   作者: sevencat

listen(socket,backlog)中backlog大小的限制,如果它小了接受方能同时建立的连接就小了  
  ======================================================  
   
  这个地方的backlog是在等待队列中的大小,而不是连接队列的大小。  
   
  就是说假如同时有10个在等待未处理的。而不是同时连接的线程。  
   
  QQ文件传输是通过服务器吗?  
  我感觉是直连的。  
  原因:一、对方隐身我就不能进行传输。  
  二、有时在网关后面就不行。  
   
  假如是TCP的话就不太可能存在这种情况了。  
   
   
  追求速度线程越多越好???  
  不是这样的。  
  你要CPU越多才越快呢。  
   
  我知道你是一个扫描程序吧。  
  非堵塞套接字可能会好点吧。  
   
  用非堵塞套接字可以立即返回,你可以以后再用select看看有多少连接了。  
  那样都可以不用多线程了只要一个工作线程就可以了。  
  反正你只是扫描而已吧?  
   
  select下面的读套接字:  
  writefds:  
  If   processing   a   connect   call   (nonblocking),   connection   has   succeeded.    
  Data   can   be   sent.    
  可能会对你有用吧。  
 

NO.10   作者: dahai_2002

如果你真的需要处理大量(上千个)的SOCKET并且对每个SOCKET都需做大量的处理,那么建议你用完成端口模型来管理这些SOCKET,比较好效率也比较高;如果像上面说的只是做扫描而已那么最好采用楼上的建议。

NO.11   作者: zxwitsme

qq应该是隔一会连接一下服务器,并不是始终连在服务器端的,发送接收消息是点对点方式  
  要不然服务器怎么受得了  
  我也觉得你的程序应该分批来连接,一下子连接太多系统资源更不上,可以采取分时操作啊  
 

NO.12   作者: flinming

qq是用UDP协议,无连接的。。。。

NO.13   作者: chineseoldghost

QQ用tcp吗,最近出的一本网络游戏编程的书上说QQ是用无连接发送的,应该是UDP吧,不知道,那位大大可以告知一二

NO.14   作者: ProgrameMan

连接数   和操作系统关系密切,另外影响连接数的一个重要因素是内存,因为每个会话都要用到大约10kb左右的内存,你说的在2000下比98下连接的多是因为2000的内存管理比98好的多

NO.15   作者: ProgrameMan

你可以试一下在2000下用2GB内存,呵呵大约可以支持40000个连接   而98下只能到10000左右   ,具体数字记不住了   呵呵


    摘要: 请问一下 public function dosomething(optional myname as string) as boolean dosomething=ismissing(myname) end function 为什么总是返回false呢? ......
» 本期热门文章:

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