多线程http服务器编写中遇到的问题
1. 404响应报文报头未加空行却仍然能正确执行。
- 错误原因
404的html文件中开头有两行空行,影响了报文的结构。所以能正常响应。
- 解决办法
首部和正文之间添加空行
2. 不能产生并发请求。
- 错误原因
pthread_create() 的最后一个参数传的是accept()返回值sock_fd的指针,由于新连接来的太快,线程还没有来得及使用sock_fd, sock_fd就被更改,所以后面的线程使用的是同一个sock_fd,而有一个线程使用完之后,sock_fd就被关闭,所以别的线程的sendfile会报bad file descriptor。
- 解决办法
最后一个参数直接传值,这样传的值是sock_fd的临时拷贝,就不会产生线程之间相互影响的问题。