我正在尝试写一个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 < 1,但是如果它在等待,我明白问题是什么。那么我如何解决它?有没有办法设置一个超时(0),所以它只会读取数据,如果它已经存在?另外我知道有“旗帜”,我设置为0,但我无法找到他们的信息。我感谢任何帮助。唯一的方法是检查缓冲区中的“END OF STATUS”字符串吗?我会用的strstr(缓冲)