从套接字读取时读取返回1,即使它读取更多

时间:2014-03-31 08:21:01

标签: c linux sockets netcat

当我从这样的SOCK_STREAM套接字读取时:

int t;
while ((t = read(clientsocket, buff, 128) > 0))
{
  write(1, buff, t);
}

read总是返回1,但是如果我用gdb查看buff,我可以看到我发送的整行。 我正在使用netcat将数据发送到服务器。

1 个答案:

答案 0 :(得分:10)

由于operator precedence

,这是不正确的
while ((t = read(clientsocket, buff, 128) > 0))

并为t分配了结果read(clientsocket, buff, 128) > 0,结果为01

要更正,请更改为:

while ((t = read(clientsocket, buff, 128)) > 0)