Buenas, tengo un problema medio raro, porque veo a todos con el mismo codigo y al parecer deberia de aceptar varios clientes..
Sever.cpp
Código C++:
Ver originalvoid Server::Accept()
{
int addrSize=sizeof(sockaddr_in);
connectSocket=accept(mySocket, (SOCKADDR*)&connectAddress, &addrSize);
if(connectSocket!=SOCKET_ERROR)
{
newSock=new Client(connectSocket, connectAddress);
client.push(newSock);
sockHandler.set(mySocket);
sockHandler.push(newSock);
//cout << "Query accepted from " << newSock->getIP() << "..." << endl;
for(int i=0; i<client.Max(); ++i)
cout << "client[" << i << "]: " << client[i]->getSocket() << "..." << endl;
}
}
return..
Cita: client[0]: 144...
client[1]: 160...
No se superponen, el push se da perfectamente, el accept de los 2 clientes tambien.
Ahora el problema es que no tengo idea de porque dejo de recibir los mensajes del cliente #1 una vez que se conecta el cliente #2..
Socket.cpp
Código C++:
Ver originalvoid Socket::nonBlocking()
{
blocking=1;
ioctlsocket(mySocket, FIONBIO, &blocking);
}
FD.cpp
Código C++:
Ver originalint queries=select(mySocket+1, &readset, NULL, NULL, NULL);
if(queries>0)
for(int i=0; i<max; ++i)
{
SOCKET s0ck=sockList[i]->getSocket();
if(FD_ISSET(s0ck, &readset))
{
cout << s0ck << " is in FD" << endl;
int len=recv(s0ck, msg, KBPS, 0);
if(len>0) msg[len]='\0';
}
else
cout << s0ck << " is not in FD" << endl;
}
return..
Cita: 144 is not in FD
160 is in FD
En ninguna parte del codigo limpio el fd_set readset, asi que no se porque se superpone, o porque se limpia y luego se agregar el nuevo set..
Hay algo que me este perdiendo?