0

问题

我已经用 C 实现了 web 服务器。但是 web 服务器经常收到 sigpipe 信号并死掉。我想了解为什么会发生 sigpipe 错误。我刚刚了解到,如果客户端先于服务器关闭套接字,则会发生 sigpipe。但我认为客户端不可能更早关闭套接字,因为我的服务器不发送额外的标头信息。例如,缓存信息、日期信息等。
所以,我很好奇Web 浏览器是否对我糟糕的 Web 服务器响应不感兴趣。以及客户端如何比服务器更早地关闭套接字?

一些场景

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

如果请求的文件是 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>

任何帮助都是极好的。谢谢你。

4

0 回答 0