2017-01-20 5 views
1

Я создал Java-сервер, используя метод сокета, но я мог бы подключить его к одному клиенту за раз.Как создать несколько подключений к моему серверу

Мой вопрос заключается в том, как заставить мой сервер подключаться к каждому клиенту отдельно и обмениваться информацией с каждым клиентом одинаково, чтобы вы знали, что 4 клиента могут использовать приложение, не подвергая себя воздействию других пользователей, но они все равно могут использовать службу сервера.

ответ

1

Вы можете использовать Threads, поэтому каждый Thread может создать новое соединение с клиентом X, как это:

Thread thread = new Thread() { 
    public void run() { 
     CreateConnectionToYourClient(); 
    } 
}; 
thread.start(); 

Надеется, что это может помочь вам

+0

будут ли потоки работать параллельно? –

+0

да @ EldarAzulay, они работают, я использую эту технику для многократного чата –

+0

, если он работает, вы потрясающий! –

0

Создайте объект клиента, который содержит информацию о клиенте (имя, сокет, дополнительная информация, требуемая вашей программой), внутри класса основного цикла создайте arraylist клиентов.

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

Объект не нужен, если вам не нужно иметь дополнительную информацию, только сокет, но это не повредит.

+0

Я не понимаю, что цикл означает, что программа должна идти 1 на 1 в массиве и работать против 1 клиента за раз. Я хочу, чтобы клиенты работали параллельно, чтобы они могли использовать сервер или даже отправлять сообщения друг другу. –

+0

@Eldar. Вы должны были упомянуть об этом. Это тоже очень просто. Когда они отправляют сообщение, проверяют, к какому пользователю он идет, получите этого пользователя от arraylist (или hashmap, если хотите), и просто отправьте его ему. Пока получение отправленных данных не блокирует сервер, все будет хорошо. –

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