我在服务器上用port:2000,bind,listen,accept,如果accept成功就开一个线程和客户机通讯。客户机1用去conect,在发送,接受一切正常。但是如果有两个客户机去连接的时候,有时可以有时不行。更多客户机连接的时候就不行了。
我想问一下如果服务器支持多个客户机连接的时候,服务器的端口是不是只用一个就可以了,我需要的服务器支持的连接也就不超过32个就可以了,
请各位谈谈这种服务器支持的多个连接,应该注意些什么问题?怎么提高速度?

解决方案 »

  1.   

    attach you more info here.i think you maybe not notice some details about Multithread server.you can consult MSDN example: http server.
    and this example in codeguru.
    Multithread server class with example of HTTP server 
    http://www.codeguru.com/network/mt_server.html
      

  2.   

    TCP肯定能收全
    socket的send函数返回实际发送的值
    这个值可能比你想发的小
    所以需要根据返回值来重发某些字节我曾经用CAsyncSocket写得一段代码
    if(!Create(1202,SOCK_STREAM))
    {
    strErrorInfo+="Monitor 创建SOCKET失败"+strReturn;
    return false;
    }
    if(!Listen())
    {
    strErrorInfo+="Monitor 创建监听失败"+strReturn;
    Close();
    return false;
    }只要一个端口监听就够了,连接的时候会自动分配端口
      

  3.   

    肯定没问题的,错误肯定不在TCP协议。============================================================================
    http://www.betajin.com/alphasun/index.htm           给我发信息请附带原帖地址
    http://alphasun.18en.com/                    http://shakingtoolkit.9126.com/
    DocWizard C++程序文档自动生成工具 | Wave OpenGL | HttpProxy | AjaxParser词法分析
      

  4.   

    很谢谢大家!
    to:foxmail(萧遥) 
    我知道,client上是会自动分配端口的,而在serve上我用netstat -a 看他一直是用的2000。
    也就是说serve不会从新自动分配。
    To:all 
     我经过大量的测试,大约发送超过2GB的数据。发现你想发比如1024个字节。那么用send肯定会成功。而那边用recv又是会成功的接受1024,又是会少于1024,如果考滤稳定性的问题,那么突然出现硬件上的问题,将会导致程序的死锁(用的阻塞模式),对于这种问题大家的看法如何?
    还想问一下,我的serve可以应付16个客户的连入吗?serve是用多线程+阻塞.
      

  5.   

    传送文件的话,主要问题要看你的线程如何处置的,还有多少个用户能够连入,和backlog有关,还有物理内存,系统资源等,16个绰绰有余,顶多就是每个都慢一点。
      

  6.   

    问题已经搞定了。有什么好方法传输文件夹。
    另外,uninstall是怎么实现将自己del的。
      

  7.   

    http://expert.csdn.net/Expert/topic/1676/1676215.xml?temp=.8383905顺便帮忙看看这个,谢过先了