2014-03-31 26 views
1

当我从一个SOCK_STREAM套接字这样写着:读返回1从套接字读取数据时,即使它更多

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

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

回答

9

这是不正确由于operator precedence

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

并且导致t被分配的read(clientsocket, buff, 128) > 0的结果,这将是01

要纠正,更改为:

while ((t = read(clientsocket, buff, 128)) > 0) 
相关问题