当我像这样从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的结果,该结果将为01

要更正,请更改为:
while ((t = read(clientsocket, buff, 128)) > 0)

关于c - 从套接字读取时,读返回1,甚至更多,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22756718/

10-15 13:11