Какой алгоритм для обработки нескольких клиентов в сокет программирования? - PullRequest
0 голосов
/ 15 марта 2012

Я продолжаю делать код для обработки нескольких клиентов в сокет-программировании, но у меня нет идеи даже для алгоритма.Я не знаю, как поступить.Может кто-нибудь помочь мне с алгоритмом?Заранее спасибо

Ответы [ 4 ]

0 голосов
/ 15 марта 2012

Я написал простой чат на Java один раз. Вы можете проверить источник здесь: github.com / Samuirai / Java

Базовая конструкция выглядит следующим образом:

ServerSocket serverSocket = new ServerSocket(4444);
System.out.println("Server started");
while (true) {
   Socket client = serverSocket.accept();   
   System.out.println("Client connected");
   ClientConnection conn = new ClientConnection(client, this);
   this.connections.add(conn);
   new Thread(conn).start();
}

Сервер ожидает подключения клиента. Когда клиент подключается, он добавляет новое соединение в список и запускает поток , который обрабатывает соединение с клиентом В проекте есть три важных файла, которые вы должны проверить: ChatServer , ChatClient и ClientConnection . Надеюсь, код легко понять.

0 голосов
/ 15 марта 2012

Я думаю, что, возможно, вам следует попробовать использовать либо модель, управляемую событиями (например, select ()), либо многопоточную модельЭто зависит от того, что вы собираетесь делать.

0 голосов
/ 15 марта 2012

Я бы скачал код Apache - он достигает этого и кажется разумным алгоритмом.

0 голосов
/ 15 марта 2012

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

Хотя существует возможность создания многопроцессорного сервера, я все же рекомендую использовать многопоточный. Причины в здесь

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