ServerSocket и несколько клиентов с одного IP - PullRequest
0 голосов
/ 12 ноября 2010

Из предыдущих публикаций SO я понимаю, что для подключения к ServerSocket требуется несколько процессов (когда каждый процесс имеет одинаковый IP-адрес).Это правильно?

Тогда как работает веб-сервер, когда вы одновременно открываете веб-сайт в двух разных вкладках браузера?(Предполагая, что вкладки выполняются в одном и том же процессе)

Если быть точным, я писал MJPEG Streamer с использованием ServerSocket, он отлично работает на одной вкладке экземпляра браузера, если я открываю другую вкладку с тем же URL-адресомсервер никогда не принимает входящее соединение.

Как этого достичь?

Ответы [ 3 ]

2 голосов
/ 12 ноября 2010
  1. номер
  2. Несколько причин. Проверьте код своего сервера, отладьте его, когда подключен второй клиент с того же IP-адреса.

Работает ли ваш сервер правильно, если вы открываете два соединения параллельно с разных IP-адресов? Если да, используете ли вы IP-адрес клиента для чего-то особенного? Если да, вам следует рассмотреть возможность использования IP: PORT клиентов в качестве идентификатора, а не только IP.

1 голос
/ 12 ноября 2010

Тогда как работает веб-сервер, когда вы одновременно открываете веб-сайт в двух разных вкладках браузера?(При условии, что вкладки выполняются в одном и том же процессе)

сервер обслуживает каждый запрос в отдельном потоке.

Основной поток логики на таком сервере:

while (true) {
    accept a connection ;
    create a thread to deal with the client ;
end while

Раздел «Поддержка нескольких клиентов»

0 голосов
/ 12 ноября 2010

Нет, один процесс может открыть несколько сокетов. Большинство браузеров могут / будут открывать несколько соединений на веб-сайте для загрузки ресурсов, таких как CSS и графические файлы. Есть несколько методов, которые могут быть использованы для этого. Обычно используется многопоточность, но также можно использовать мультиплексированный ввод / вывод.

Они имеют разные порты на стороне браузера. Сервер различает соединения по IP-адресам и портам. Серверы обычно используют несколько потоков, несколько процессов, мультиплексированный ввод-вывод или их комбинацию.

Браузер должен иметь возможность обрабатывать несколько вкладок, подключенных к одному веб-сайту. Я часто запускаю несколько вкладок мультимедиа на одном и том же сайте в Firefox.

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