我采用单线程里  send   http数据包,,web服务器正常返回
我现在采用多线程 在多线程里(每一个线程都connect,然后send,在recv)
 但是我发现,输出的只有 几个能建立连接,其它的都不行。1:问题 多线程中用connect去连接一个服务器,并发数是多少?xp?window7?
2:问题 如何增加并发数?3:我想大量的并发访问同一台服务器,收发数据,怎么办好。求告知思路

解决方案 »

  1.   

    这个没有人规定最多有多少个连接,服务器能接受多少个,就能连接多少个
    有几个线程是成功的,几个线程失败的,楼主看看哪地方出现了问题,是connect失败,时间太长,还是接收发送时的问题,如果出现错误就看看错误码再找原因
    如果想大量并发访问服务器,也不必建立多个线程,其实四五个线程就够了,每个线程执行一部分任务,比如连接服务器,发送数据,接收数据,当然,这样就必须异步执行这些操作了
    至于套接字的异步操作,有很多种,楼主百度/google一下
      

  2.   

    可能是:服务器端监听队列数目小了 
    int listen(
      SOCKET s,    
      int backlog  
    );
    backlog 
    [in] Maximum length of the queue of pending connections. If set to SOMAXCONN, the underlying service provider responsible for socket s will set the backlog to a maximum reasonable value. There is no standard provision to obtain the actual backlog value. 
      

  3.   

    1:问题 多线程中用connect去连接一个服务器,并发数是多少?xp?window7?
    2:问题 如何增加并发数?
    3:我想大量的并发访问同一台服务器,收发数据,怎么办好。
    1、没有限制,服务器的负载多大就可以连多少,不过一般电脑的连接数2000左右
    2、增加服务器负载
    3、每个线程管理自己的链接就可以收发了
      

  4.   

    http连接数并无限制,但是,对于有些具体的网站服务器,会进行单IP连接数及频率跟踪控制,这完全是在具体的应用层实现的
    你需要测试其Web Server,以摸清其服务器的性情
    如果连接数有限制,可以通过保持连接(Keep-Alive)进行一些弥补