Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

сервер и его порт

14K
07 февраля 2006 года
dehan
5 / / 22.01.2006
может ли серверный сокет обслуживать несколько клиентов через один и тот же порт?
398
07 февраля 2006 года
Alexandoros
630 / / 21.10.2005
Наверное может. Ведь обслуживает веб сервер всех через 80, или фтп.
2
08 февраля 2006 года
squirL
5.6K / / 13.08.2003
никаких наверное :D он так и делает. так и только так.
1.9K
12 февраля 2006 года
Rad87
123 / / 14.12.2005
Цитата:
Originally posted by squirL
никаких наверное :D он так и делает. так и только так.


А мне всегда казалось что все работает по другому:
1 Клиент коннектится к порту сервера
2 Сервер получает запрос на коннект и создает дополнительный порт и из этого порта отправляет ответ клиенту.
3 Клиент получает ответ от сервера и в дальнейшем ведет общение с дополнительным портом. А главный порт продолжает ожидать соединения других клиентов

14K
12 февраля 2006 года
dehan
5 / / 22.01.2006
Цитата:
Originally posted by Rad87
А мне всегда казалось что все работает по другому:
1 Клиент коннектится к порту сервера
2 Сервер получает запрос на коннект и создает дополнительный порт и из этого порта отправляет ответ клиенту.
3 Клиент получает ответ от сервера и в дальнейшем ведет общение с дополнительным портом. А главный порт продолжает ожидать соединения других клиентов



ладно, а как тогда сервер может "заставить" клиента перепдоключиться на другой порт? Если допутим сервер будет через данный (самый первый) порт посылать клиенту куда подключиться, а в это же время подключится еще кто-нить?
Вот в Delphi есть TServerSocket - все чрез один порт делает...

1.9K
12 февраля 2006 года
Rad87
123 / / 14.12.2005
Цитата:
Originally posted by dehan
ладно, а как тогда сервер может "заставить" клиента перепдоключиться на другой порт? Если допутим сервер будет через данный (самый первый) порт посылать клиенту куда подключиться, а в это же время подключится еще кто-нить?
Вот в Delphi есть TServerSocket - все чрез один порт делает...


Это тебе только так кажется так как там скрыты некоторые аспекты его работы (Ты почитал бы о работе класса Socket и сразу разобрался т.к. он в отличии от классов в Delphi и MFC работает на более "низком уровне").
И хочу заметить что схема работы сервера описанная ранее относится к протоколу TCP/IP

2
13 февраля 2006 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by Rad87

И хочу заметить что схема работы сервера описанная ранее относится к протоколу TCP/IP


описанная ранее - вряд ли.
классическая схема работы сервера выглядит так:
1. получаем дескриптор сокета - socket
2. делается привязка сокета к адресу:порту - bind
3. сокет помечается как прослушивающий listen, после этого по netstat -a можно увидеть комбинацию его адреса и слушающего порта с пометкой LISTEN
4. далее запускается функция accept, после приема соединения которой, порождается процесс потомок, либо запускается новый обрабатывающий поток.

короче - со стороны сервера всегда участвует одна и та же комбинация адрес:порт. противоречия в этом нет, так как для ОС соединение описывается полной комбинацией "локальный адрес:локальный порт" и "удаленный адрес:удаленный порт".
убедится в этом можешь так. запусти на своей машине скажем telnet сервер и коннектись к ней. потом, после установления соединения, см. netstat -n.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог