尝试用C实现一个简单的http服务器,遇到了些小问题,请大神帮帮忙
流程:
启动服务器监听端口 -> accept 请求后创建线程处理 -> 返回结果
问题:
向客户端send完结果之后,如果 close() 浏览器页面就会显示 “连接被重置”
如果不close , 页面就会一直加载中
思考:
是我返回的http数据不完整还是其他原因呢?
代码:
char buf[1024];
//发送header
sprintf(buf, "HTTP/1.0 200 OK\r\n");
send(client_fd, buf, strlen(buf), 0);
sprintf(buf,"Content-Type: text/html;charset=utf-8\r\n");
send(client_fd, buf, strlen(buf), 0);
sprintf(buf, "\r\n");
send(client_fd, buf, strlen(buf), 0);
//发送内容
sprintf(buf, "
test");send(client_fd, buf, strlen(buf), 0);
sprintf(buf, "
welcome
");send(client_fd, buf, strlen(buf), 0);
//关闭连接
close(client_fd);
回答:
因为你的浏览器不知道你的数据是否返回完毕了,你需要把你要响应