sock receive fdset problem
Code:
exStr sock_receive()
{
engine::fdset = engine::fds;
engine::sr = select(1, &engine::fdset, NULL, NULL, &engine::selectTime);
if (engine::sr == 1)
{
if (FD_ISSET(engine::esock.sock, &engine::fdset))
{
ofstream fout;
fout.open("errors.txt", ios::binary | ios::app);
fout << "+";
fout.close();
char
buffer[1027] = "",
flag[6] = "";
int nRcvd = 0;
unsigned int iLen = 2;
bool gotLen = 0;
engine::exbuff[0] = '\0';
do
{
int rc = recv(engine::esock.sock, &buffer[nRcvd], iLen, 0);
if (rc > 0)
{
nRcvd += rc;
if ((!gotLen) && (nRcvd > 1))
{
iLen = unpack(buffer[0], buffer[1]);
gotLen = true;
}
}
else
{
if (rc == -1)
{
engine::sockRcvErr = -1;
}
if (rc == 0)
{
engine::sockRcvErr = 0;
}
}
}
while ((!gotLen) || (nRcvd < iLen));
engine::sockRcvErr = 0;
process_instruction(buffer, iLen);
return (engine::exbuff);
}
else
{
engine::sockRcvErr = 2;
}
}
else
{
engine::sockRcvErr = 3;
}
return ("");
}
This function will receive the first message it gets perfectly fine. After that it won't receive any other messages. Can anyone tell me whats wrong?