【发布时间】:2012-09-25 03:12:42
【问题描述】:
我正在尝试编写一个 FTP 客户端,我需要打印出服务器对我的命令的响应。这些命令之一是 STAT。服务器返回响应,据我了解,响应位于套接字缓冲区中,我可以使用 read() 命令读取该缓冲区。问题是我只需要 STAT 的响应,所以我知道它将以 END OF STATUS 结束。这是我为阅读响应而编写的代码:
in = read(connFd, &timebuffer, sizeof(timebuffer));;
while(in>0){
printf("%s", timebuffer);
memset(&timebuffer, 0, sizeof timebuffer);
in = read(connFd, &timebuffer, sizeof(timebuffer));
}
memset(&timebuffer, 0, sizeof timebuffer);
我遇到的问题是,一旦 read() 函数通过缓冲区并完成读取,while 循环不会终止并无限继续,我的程序就在那里。我认为这是因为 read() 函数正在等待数据,所以我想知道是否有办法告诉 read() 在到达缓冲区末尾时停止。我认为这会自动发生,因为 read() 会返回 x
【问题讨论】:
标签: sockets tcp ftp client buffer