在C中测试客户端套接字是否仍然存在

时间:2014-12-03 04:11:47

标签: c sockets

client_sock_fd是从accept()返回的文件描述符,这是我在服务器中的代码:

char buff[BUFFSIZE];
FILE* rstream = fdopen(client_sock_fd, "r");

if(rstream == NULL){
    perror("create read stream failure");
    pthread_exit(NULL);
}

/* how to exit block when client shutdown the socket */
while(fscanf(rstream, "%s", buff) != EOF){
    printf("%s\n", buff);
}

fclose(rstream);
close(client_sock_fd);

当我关闭客户端中的套接字或者可能发生一些错误以便关闭客户端套接字时,但是,在服务器中,它被fscanf(rstream, "%s", buff) != EOF阻止,这意味着fscanf()被阻止,永远不会回来。

我的问题是如何在执行fscanf()之前测试连接是否仍然存在?

0 个答案:

没有答案