2012-04-12 2 views
0

Я хочу знать несколько простых вещей об установления соединения между клиентом и сервером. Предположим, что на моей веб-странице есть меню, в котором у меня есть ссылки, при нажатии этих дочерних страниц открываются в правой части главной страницы. Теперь каждая ссылка запрашивает новую веб-страницу до сервера. Каждая веб-страница асинхронно вызывает 5-6 веб-сервисов для получения данных. Таким образом, , если я нажимаю на ссылку меню слева, устанавливается соединение между клиентом и сервером , используя (client IP and Port) до (server Ip and port). Но до того, как ответ наступит, предположим, что я нажал на другую ссылку меню, а затем, как сервер знает, что старый conneciton завершен и установлено новое соединение. В то же время, когда я нажал на ссылку, запрос переходит на сервер, сервер обрабатывает запрос, но перед отправкой ответа, если соединение прекращено с клиентской стороны, что происходит с этим ответом, сервер отбрасывает ответ и берет новый запрос на процесс.установление соединения между клиентом и сервером

На самом деле у меня много путаницы, поэтому, если кто-нибудь может объяснить мне полный процесс взаимодействия с клиентом и сервером, это действительно поможет.

Заранее спасибо

ответ

0

Сервер выкинет ответ и будет работать в последующих запросах. Чтение протокола передачи гипертекста позволит вам понять больше. Вы можете искать в Интернете одну из статей: here

Запрос и ответ выполняется по TCP, который является протоколом, ориентированным на соединение, поскольку разрыв соединения IIS будет знать, что клиент, если он недоступен. Вы попробуете http://www.google.com.pk:80 доставит вас до http://www.google.com.pk, так как мы можем опустить порт по умолчанию, то есть 80. Попробуйте это http://www.google.com.pk:82/, он не откроется на www.google.com, поскольку подключение tcp не может быть выполнено на порту 82.

+0

, но вопрос в том, как сервер знает о завершенном соединении. – Pranav

+0

Когда сервер пытается записать HTTP-поток в сокет, он выдает исключение, потому что сокет больше не существует. Сначала сервер попытается отправить заголовки ответов, и в этом случае произойдет сбой. IIS управляет этим. Ваш код asp.net не знает, закрыт ли сокет. Однако вы можете попробовать response.write и response.flush, чтобы сбросить поток ответов обратно в сокет. Даже при этом iis будет иметь буфер отклика, который нужно заполнить первым, чтобы он не был точным способом. Поскольку @Adil говорит, что вы должны прочитать об http-протоколе, а также iis internals. –

+0

Запрос и ответ выполняется через TCP, который является протоколом, ориентированным на соединение, поскольку разрыв соединения IIS будет знать, что клиент, если он недоступен. Попробуйте http://www.google.com.pk:80 вы попадете на http://www.google.com.pk, так как мы можем опустить порт по умолчанию, то есть 80. Попробуйте http://www.google.com .pk: 82/он не откроется на www.google.com, поскольку подключение tcp не может быть выполнено на порту 82 – Adil

Смежные вопросы