while(success == 0) { while((n = read(sockfd,buffer,BUFFSIZE,0)) > 0) { printf("%s",buffer); bzero(buffer,BUFFSIZE); } success = 1; printf("###"); }
打印信息,但三个哈希(###)永远不会打印?为什么?该程序似乎阻止了read().这里我只是打印,但我需要做的是缓冲整个消息然后处理它.
通常,您的应用程序级逻辑需要事先知道要读取多少内容,或者在收到某个终结符之前读取,或者另一端正常关闭或关闭套接字.
(非阻塞I / O完全不同于它 – 它允许您在单个线程中有效地从套接字读取时执行其他操作,但它无法解决确定何时从套接字读取完成的问题,是你的问题.)