我在服务器和客户端之间进行通信,当消息中包含单词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的代码,我现在得到分段错误。