当我像这样从SOCK_STREAM套接字读取时:
int t;
while ((t = read(clientsocket, buff, 128) > 0))
{
write(1, buff, t);
}
read总是返回1,但是如果我查看gdb的buff,我可以看到我发送的整个行。
我正在使用netcat将数据发送到服务器。
最佳答案
由于operator precedence,这是不正确的:
while ((t = read(clientsocket, buff, 128) > 0))
并导致
t
被分配为read(clientsocket, buff, 128) > 0
的结果,该结果将为0
或1
。要更正,请更改为:
while ((t = read(clientsocket, buff, 128)) > 0)
关于c - 从套接字读取时,读返回1,甚至更多,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22756718/