1. 实现按行读取请求头部
//返回值: -1 表示读取出错, 等于 0 表示读到一个空行, 大于 0 表示成功读
取一行
int get_line(int sock, char *buf, int size){
int count = 0;
char ch = '\0';
int len = 0;
while( (count<size - 1) && ch!='\n'){
len = read(sock, &ch, 1);
if(len == 1){
if(ch == '\r'){
continue;
}else if(ch == '\n'){
//buf[count] = '\0';
break;
}
//这里处理一般的字符
buf[count] = ch;
count++;
}else if( len == -1 ){//读取出错
perror("read failed");
count = -1;
break;
}else {// read 返回 0,客户端关闭 sock 连接.
fprintf(stderr, "client close.\n");
count = -1;
break;
}
}
if(count >= 0) buf[count] = '\0';
return count;
}
2. 如果碰到两个连续的回车换行,即,意味着请求头部结束