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)