K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]


新規投稿 | 開設者ホームページへ戻る | ヘルプ


[1958] 書籍「Webサーバを…」の1.3.3について
返信


投稿者:E2E4E9E4
2016/07/30 00:31:48

Link:
お世話になります。
以前に1.5.4について質問させていただいたものです。
その節はありがとうございました。(お礼が遅れてすみません)

今回もまた質問させてください。

p24では、「( 先にブラウザを閉じてしまうと、ソケットが閉じられて、ソケット切断後はInputStream.read()は-1を返すのですが、TcpServerはそれに対するチェックを入れていないので無限ループに入ります……)」とあります。
これは、
「(TcpServerは、17行目でクライアントから終了マークである0を受け取るまで処理を継続するようになっていますが、本物のWebブラウザはこのような終了マークを送らないからです)」
とすべきではないでしょうか。

実際に先にブラウザを閉じてしまうと、TcpServerは「java.net.SocketException: Connection reset」の例外をcatchしてスタックトレースを吐いた後に終了します。

[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1959] Re:書籍「Webサーバを…」の1.3.3について
返信


投稿者:(ぱ)こと管理人
2016/08/01 01:02:12

Link:
>実際に先にブラウザを閉じてしまうと、TcpServerは「java.net.SocketException: Connection reset」の例外をcatchしてスタックトレースを吐いた後に終了します。

確認しました。
確かにIEで試すと、例外を吐いて終了しました。
ただ、Firefoxで試すと、やはり-1を返して無限ループに入りました。

本書は対象をIEとうたっているので何らかのフォローはしようと思いますが、
FirefoxとIEで動きがどう違うのか、現時点ではわかっていません。
[ この投稿を含むスレッドを表示] [ この投稿を削除]