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