Создание сокетов в общении java клиент-сервер - PullRequest
0 голосов
/ 21 сентября 2018

В программе клиент-сервер java-сокета, включающей в себя клиентский графический интерфейс, учитывая следующее:

  1. Взаимодействие клиент-сервер не будет непрерывным, что означает, что конечный пользователь может иметь графический интерфейсоставлен открытым, но будет время от времени только нажимать кнопки / инициировать запросы.

  2. Сервер будет инициировать новый поток для каждого клиента

  3. ВсеВвод / вывод будет осуществляться через ObjectInput / OutputStream

Таким образом, исходя из вышеизложенного, что будет лучшим подходом при создании соединения / сокета:

  1. Будет ли этобыло бы лучше инициировать одно соединение с сокетом для каждого клиента и поддерживать его, пока клиент не закроет свой GUI / сеанс, и обработать все операции ввода-вывода в этом же соединении?
  2. Или просто инициировать новое соединение с сокетом каждый раз, когда клиент запрашиваетчто-то и закрыть, как только ответ сервера будет доставлен?(Чтобы один сеанс клиентского графического интерфейса мог иметь несколько подключений / отключений к серверу)

Каковы плюсы / минусы использования одного поверх другого?

Большое спасибо

1 Ответ

0 голосов
/ 21 сентября 2018

Для запросов, инициированных «кликом» пользователя, я бы использовал второй режим, в котором вы открываете и закрываете соединения для каждого действия пользователя отдельно.Это позволит вам не оставлять несколько открытых соединений навсегда.Сохранение соединений навсегда может привести ко многим проблемам типа истощения ресурсов.Если у вас нет действительно важной причины сохранять открытые соединения, например.что вам нужно ответить клиенту с помощью некоторых живых сообщений, таких как чат, а вы можете ответить сразу после запроса, тогда было бы намного проще не поддерживать соединение.Всегда лучше не оставлять открытые соединения в холостом режиме, если это не требуется.

...