Что происходит, когда вы прерываете поток HTTP? - PullRequest
0 голосов
/ 19 июня 2010

Позвольте мне попытаться уточнить мой вопрос, я не был уверен, как назвать название.Это просто из моего любопытства.

Между необработанными байтами, приходящими через ваше интернет-соединение и вашим браузером, есть много слоев.Каждый слой добавляет дополнительную структуру к данным, в конечном итоге заканчивая HTML-разметкой.Я предполагаю, что конечная длина данных HTML неизвестна, и байты передаются до тех пор, пока документ не будет завершен.Пожалуйста, исправьте меня, если это предположение неверно.

Вы потеряли терпение и нажали «Стоп» в своем браузере.Что происходит в этих слоях?Является ли сокет закрытым на стороне клиента и разрешено ли возникновение исключительной ситуации через уровни?По крайней мере, в одной точке этой цепочки должна быть операция блокировки, которая ожидает слой под ним и который больше не блокирует, так как это происходит?

Я прошу прощения, если это не ясно.У меня проблемы с изображением, которое у меня на уме.

1 Ответ

0 голосов
/ 19 июня 2010

Поскольку HTTP работает по протоколу TCP, приложение знает, когда соединение прервано, и может отображать содержимое, которое оно получило.

Конечно, вы всегда можете неправильно разорвать соединение, например, физически отсоединив кабельподключить вас к интернету.В этом случае любое TCP-приложение будет ждать несколько секунд, а затем объявит, что время соединения истекло - в случае браузеров, как правило, не отображающих никакого содержимого.

Что касается обработки исключений, это зависит от приложения.Чтение из сокетов блокирует, когда оно завершает, приложение должно проверить, что оно получило что-то, и что не произошло ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...