当缓冲区中有某个单词时,如何停止从套接字读取?

时间:2017-05-22 20:58:17

标签: c sockets tcp

我在服务器和客户端之间进行通信,当消息中包含单词EXIT时,我需要关闭套接字。我不知道该怎么做。我尝试使用for循环检查每个字符并将其与E X I和T进行比较,如果它发现它们彼此跟随它关闭套接字但它不起作用。我还需要在EXIT字之前在屏幕上写一切。 我在屏幕上阅读和写作的代码:

while(1){
    client_socket_fd = accept(socket_fd, 0, 0);
    char data[101];
    int l;
    for(i = 0; i < l; i++){
        if(data[i] == 'E' && data[i+1] == 'X' && data[i+2] == 'I' && data[i+3] == 'T'){
        x = 1;
        for(j = 0; j < i; j++){
            printf("%s", data[j]);
        }
        break;
    }
    }
        if(x == 1){
            break;
        }
    //printf("reading data from client\n");
    while(1){
        l = read(client_socket_fd, data, 100);

        if(l == 0){
            //printf("client disconnected?\n");
            bzero(data, sizeof(data));
            break;
        }
        if(l < 0){
            printf("error reading form client socket\n");
            break;
        }
        data[l] = 0;
        printf("%s ", data);
    }
    if(x == 1){
        break;
   }

close(client_socket_fd);
close(socket_fd);

编辑:添加了检查EXIT的代码,我现在得到分段错误。

0 个答案:

没有答案