请问TCP阻塞+多线程有关问题

请教TCP阻塞+多线程问题
如下实现多线程阻塞
C/C++ code

SOCKET AcceptSocket;
    SOCKADDR_IN addrClient;
    int addrClientLen = sizeof(SOCKADDR);
    printf("Waiting for client to connect...\n");
    while(1) {
        if( (AcceptSocket = accept( ListenSocket1, (SOCKADDR *)&addrClient, &addrClientLen)) != SOCKET_ERROR ) {
            ConnectInfor * conInf = new ConnectInfor();
            conInf->addrClient = addrClient;
            conInf->sock = AcceptSocket;
            CreateThread(NULL,0,SocketThread,(LPVOID)conInf,0,NULL);  
        }

    }


线程代码
C/C++ code

DWORD WINAPI SocketThread(LPVOID lpmess)  
{   
    ConnectInfor * conInf = (ConnectInfor *)lpmess;
    
    char conType;
    int bytesRecv;
    
    bytesRecv = getByte(conInf->sock,conType);
    if ( bytesRecv <= 0 || bytesRecv == WSAECONNRESET ) {
        return 0;
    }

    switch(conType)
    {
    case CAMERA:
        cameraNet(conInf);
        break;
    case PLAYER:
        playerNet(conInf);
        break;
    }

    closesocket(conInf->sock);
    printf("close sock\n");
    delete conInf;
    
    
    return 0; //最后不要忘记返回一个DWORD    
} 



现有客户端1
send一个字节,再recv255个字节,然后closesocket

客户端2
循环 send一个字节,再recv255个字节。
服务器对应处理代码为
C/C++ code

void cameraNet(ConnectInfor * conInf)
{
    SOCKET ListenSocket = conInf->sock;
    char sendbuf[32] = "Server: Sending data.";
    char recvbuf[32] = "";

    int bytesSent;
    int bytesRecv = SOCKET_ERROR;
    printf("camera connect\n");
    Camera  camera  ;
    camera.getCameraInf(conInf);
    connectCameraList[camera.id] = camera;
    while(true)
    {
        char b;
        bytesRecv = getByte(ListenSocket,b);
        if ( bytesRecv <= 0 || bytesRecv == WSAECONNRESET ) {
            break;
        }

        switch(b)
        {
         
        case 100:
            {
                bytesSent = send( ListenSocket, sendbuf, strlen(sendbuf), 0 );
                bytesRecv = recv( ListenSocket, recvbuf, 32, 0 );
                if ( bytesRecv <= 0 || bytesRecv == WSAECONNRESET ) {
                    printf( "Bytes Recv from %d(ip = %s:%d): Connection Closed\n",ListenSocket,inet_ntoa(conInf->addrClient.sin_addr),htons(conInf->addrClient.sin_port) );
                    break;
                }
                printf("from client recive: %s\n",recvbuf);
                 
            }
            break;
        }
        Sleep(0);
    }
    printf("camera desconnect\n");
    connectCameraList.erase(camera.id);
}



现象:
只启动n个客户端1,工作正常(这是当然的)
启动n个客户端2,第一个正常,第二个以上不能连接。
启动1个客户端2,再启动一个客户端1,工作正常,但再启动一个客户端2,也连接失败。


请问问题有可能出现在哪里呢?
是不是对应循环发送消息的线程需要将socket休眠之类的?





















------解决方案--------------------
没看懂,应该把修改部分做一下说明