Hello Everyone,
I have written socket programming in c++.
some times my read will get strucked.
Code:
void handlesocket(int newsockfd)
{
char *buffer, *temp, *temp2;
int n,i;
int readNow, toRead;
if (newsockfd < 0)
error("ERROR on accept");
buffer = new char[960000];
temp = new char[16];
temp[0] = '\0';
temp2 = new char[1];
temp2[0] = '\0';
i = 0;
do
{
n = read(newsockfd,temp2, 1);
if(temp2[0]=='@') break;
temp[i++] = temp2[0];
temp[i] = '\0';
}
while(n > 0);
n = 0;
do
{
buffer[0] = '\0';
toRead = atoi(temp) - n;
printf("ready to read\n ToRead=%d\n",toRead);
//Sometime strucking at this next line
readNow = read(newsockfd,buffer,toRead);
printf("ReadNow is %d\n",readNow);
if(readNow < 0) break;
n += readNow;
printf("ISAC %d --- %d --- %d\n",atoi(temp),n,readNow);
buffer[readNow] = '\0';
writeintofile(buffer);
}
while(n < atoi(temp));
close(newsockfd);
free(buffer);
free(temp);
free(temp2);
}
Please help me out...