1
当我从一个SOCK_STREAM套接字这样写着:读返回1从套接字读取数据时,即使它更多
int t;
while ((t = read(clientsocket, buff, 128) > 0))
{
write(1, buff, t);
}
总是读返回1,但如果我考虑的buff用gdb我可以看到整个我送的线。 我正在使用netcat将数据发送到服务器。
当我从一个SOCK_STREAM套接字这样写着:读返回1从套接字读取数据时,即使它更多
int t;
while ((t = read(clientsocket, buff, 128) > 0))
{
write(1, buff, t);
}
总是读返回1,但如果我考虑的buff用gdb我可以看到整个我送的线。 我正在使用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)