我做了一个IOCP的服务端,用来进行文件传输(限定2万个连接)
现在用另外几台PC连接服务器进行文件下载,一切正常
后来我在一台计算机上同时运行IOCP服务器和客户端
客户端的功能就只是connect服务器,发现连接数只能到135个客户端代码如下:const int nCount = 10000;
sockaddr_in SrvAddr; //服务器地址,IP为 127.0.0.1SOCKET CliSocket[nCount];for(int i = 0; i < nCount; i++)
{
    CliSocket[i] = socket(...);
    int nResult = 
         connect(CliSocket[i], (sockaddr*)&SrvAddr,sizeof(sockaddr));
    Sleep(1);
    if(nResult == SOCKET_ERROR)
    {
        //此时 j 为 0, i 为 135
        int j = WSAGetLastError();
     }
}请问大家这是什么原因?还有什么地方需要注意?

解决方案 »

  1.   

    单线程发起的连接数好象很有限。要进行测试,可以把服务器先设计成ECHO,然后客户端采用多线程,并且不断的收发数据。单机,由于线程总数的限制,一般可以上3k左右客户线程,当然,这个3k实际上并非并发的,因为你的CPU资源有限。要产生并发,必须实实在在地有多台机器,并且最好都开多线程,才能模拟。另外设计的服务器,也需要考虑到多线程的并发(多线程并不等于就会有多线程并发)的资源访问冲突。