从套接字

时间:2016-06-05 12:02:42

标签: sockets

我想从套接字读取数据流,并在服务器完成发送后停止读取。下面的代码永远不会运行else if(因为read永远不会读取0个字节;))。如何在从服务器获得我想要的内容之后打破或修改while循环?

    while(1){
        /* receive answer from server */
        t = read(sock, output, MAX);
        if (t > 0) {
            puts("received smthn");
        }
        else if (t == 0) {
            puts("***ITS OVER***");
        } else {
            printf("Connection with server terminated.\n");
            exit(1);
        }
    }

1 个答案:

答案 0 :(得分:1)

要使read函数返回0,服务器必须关闭其侧面的套接字(请参阅close)。

如果服务器忘记在套接字上调用close,您可以在阅读之前尝试查看某些数据是否已准备好在套接字上读取:请参阅select或查看https://stackoverflow.com/a/36786740/1212012