从下面的代码中,为什么我收到了 Reading Socket 响应
int Read(int sock, char *p, int size)
{
int remain, read=0;
remain = size;
while (remain > 0 ) {
if ((read = recv(sock, p, remain, 0)) < 0) {
/* Error */
return(read);
} else if (read == 0 || *p == 0x0a) {
/* EOF */
break;
}
remain -= read;
p += read;
}
return(size - remain);
}
while (!done)
{
printf("***Reading Socket for response***");
rsplen= Read(myVsHandle.sock,(char *)encXMLResponse,MAX_RSP_LEN);
if (rsplen < 0 )
{
printf("Internal Communication Error");
return -1;
}
else if (rsplen >0)
printf("Revieved response");
done++;
return 0;
else if (rsplen == 0)
{
printf("Reading socket");
}
最佳答案
您正在等待MAX_RSP_LEN
要读取的字节 - 是否有那么多字节要读取?也许您的进程陷入阻塞 read()
.
还取决于您的套接字类型 recv()
从中,无法保证您将读取的数据量,因此专门寻找值 0x0a
可能不起作用。
关于c - C语言的socket编程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2295122/