Многопоточный клиентский сокет в Java - PullRequest
0 голосов
/ 21 октября 2019

Что нужно изменить, чтобы простой клиентский сокет, записывающий в java, стал многопоточным сокетом (я взял простой пример сокета из сети), спасибо

1 Ответ

3 голосов
/ 21 октября 2019

Многопоточность .. клиент сокет? Это не имеет смысла. Один сокет - это поток данных, вы не можете распараллелить потоки сокетов, как это.

Конечно, вы можете создать приложение, которое открывает 5 отдельных соединений (возможно, все к одному и тому же серверу, что было бы хорошо). ) и обрабатывает эти 5 отдельных соединений, каждое из которых состоит из одного потока байтов «от клиента к серверу» и одного потока байтов «от сервера к клиенту», используя 5 отдельных потоков.

Но вы можетене пишите приложение, которое имеет одно соединение, а затем пытается обработать это соединение, используя 5 потоков.

Возможно, вы имели в виду server socket. Для серверных сокетов вы создаете один объект ServerSocket. Один поток вызывает для него метод accept (который ожидает подключения клиента, устанавливает соединение, а затем передает вам объект Socket, представляющий одно соединение, вместе с двумя потоками, которые формируют это соединение). Затем вы можете создать новый поток (или извлечь поток из пула потоков, что обычно является лучшим способом сделать это), передать ему сокет и позволить ему обработать этот сокет. Таким образом, вы можете иметь, скажем, 50 потоков, каждый из которых обрабатывает один сокет: теперь ваш сервер может работать с 50 клиентами, подключенными одновременно.

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