2014-03-31 27 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) 
相關問題