Question

我在C中实现了Web服务器 . 但是Web服务器经常接收sigpipe信号并死掉 . 我想了解为什么发生sigpipe错误 . 我刚刚得知,如果客户端早于服务器关闭套接字,就会发生sigpipe . 但我认为客户端之前不可能关闭套接字,因为我的服务器不会发送额外的头信息 . 例如,缓存信息,日期信息等 .
所以, I'm curious 如果网页浏览器对我糟糕的网络服务器响应没有兴趣的话 . 和 how client can close socket earlier than server?

Some scenario

我的服务器等待客户端的请求消息 . 然后它只解析状态行 .
然后它将响应消息发送到浏览器(客户端) .

如果请求的文件是HTML文档,则服务器发送以下响应消息 . 也就是说,服务器将HTML文本写入套接字,而不是硬盘上的现有文件 .

HTTP/1.1 200 OK
Connection: close

<html file>

如果请求的文件是* .jpg,* .gif或* .ico,则服务器发送以下消息 .

HTTP/1.1 200 OK
Connection: close
Accept-Ranges: bytes
Content-length: <file size>
Content-Type:image/jpg, gif or x-icon

<some binary information for image>

任何帮助都是极好的 . 谢谢 .