izi*_*ise 1 c sockets linux netcat
当我从这样的SOCK_STREAM套接字读取时:
int t;
while ((t = read(clientsocket, buff, 128) > 0))
{
write(1, buff, t);
}
Run Code Online (Sandbox Code Playgroud)
read总是返回1,但如果我用gdb查看buff,我可以看到我发送的整行.我正在使用netcat将数据发送到服务器.
hmj*_*mjd 10
由于运算符优先级,这是不正确的:
while ((t = read(clientsocket, buff, 128) > 0))
Run Code Online (Sandbox Code Playgroud)
并导致t被分配结果read(clientsocket, buff, 128) > 0,这将是0或1.
要更正,请更改为:
while ((t = read(clientsocket, buff, 128)) > 0)
Run Code Online (Sandbox Code Playgroud)