从C中的套接字读取消息

前端之家收集整理的这篇文章主要介绍了从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完全不同于它 – 它允许您在单个线程中有效地从套接字读取时执行其他操作,但它无法解决确定何时从套接字读取完成的问题,是你的问题.)

猜你在找的C&C++相关文章