【发布时间】:2011-04-12 18:40:34
【问题描述】:
我正在编写一个简单的客户端,它通过 TCP 流读取二进制数据。 由于文件是逐部分发送的,因此我有一个类似于此的循环:
while (1 /* Maybe a check for EOF or if the socket is closed here ? */) {
ssize_t bytes_red = recv(
if (bytes_read <= 0) // not working properly ?
break;
...
}
读取是通过 recv() 方法完成的,该方法返回接收到的字节数。 这个想法显然是只要打开TCP流就可以读取数据,但是上面的方法似乎对我不起作用。
还有其他想法吗?在流关闭或遇到 EOF 之前,从套接字读取的干净方法是什么?
编辑:上述方法工作正常,我在其他地方遇到了错误。
【问题讨论】:
-
"Encounter an EOF" in this case 等同于"socket is closed"
标签: sockets unix tcpclient eof