前端之家收集整理的这篇文章主要介绍了
从C中的套接字读取消息,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试着理解从C(
Linux)中的socket读取,这只是
代码的一部分:
while(success == 0) {
while((n = read(sockfd,buffer,BUFFSIZE,0)) > 0) {
printf("%s",buffer);
bzero(buffer,BUFFSIZE);
}
success = 1;
printf("###");
}
打印信息,但三个哈希(###)永远不会打印?为什么?该程序似乎阻止了read().这里我只是打印,但我需要做的是缓冲整个消息然后处理它.
套接字另一端的程序不是
closing它,也不是
shutting down它的写入(这是你的读取),所以你的结局并不知道一切都已完成 – 事实上,从逻辑上来说它没有完成,直到另一端说没什么可读的了.
通常,您的应用程序级逻辑需要事先知道要读取多少内容,或者在收到某个终结符之前读取,或者另一端正常关闭或关闭套接字.
(非阻塞I / O完全不同于它 – 它允许您在单个线程中有效地从套接字读取时执行其他操作,但它无法解决确定何时从套接字读取完成的问题,是你的问题.)
原文链接:https://www.f2er.com/c/115619.html