Sever.cpp
Código C++:
Ver original
void 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:
No se superponen, el push se da perfectamente, el accept de los 2 clientes tambien.client[0]: 144...
client[1]: 160...
client[1]: 160...
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 original
void Socket::nonBlocking() { blocking=1; ioctlsocket(mySocket, FIONBIO, &blocking); }
FD.cpp
Código C++:
Ver original
int 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:
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..144 is not in FD
160 is in FD
160 is in FD
Hay algo que me este perdiendo?