Этому вопросу 5 с половиной лет, но на него еще не ответили и не закрыли. Вот почему я пишу это, предполагая, что спрашивающий имел в виду Модель сервера-клиента .
Я бы порекомендовал проверить NetCom2 . Это простой в использовании каркас, который поддерживает высокую модульность для будущих улучшений.
Концепция, лежащая в основе этого фреймворка, может показаться довольно странной, поскольку он построен как «по сети» Event-Bus . Коммуникация состоит в основном из объектов, летящих над сетью, и серверов / клиентов, реагирующих на нее.
На сервере вы написали бы java-программу, которая могла бы выглядеть так:
public class ServerMain {
private ServerStart serverStart;
public ServerMain(int port) {
serverStart = ServerStart.at(port);
}
public void start() throws StartFailedException, ClientConnectionFailedException {
serverStart.launch();
serverStart.acceptAllNextClients();
}
}
И потенциальный Клиент будет выглядеть так:
public class ClientMain {
private ClientStart clientStart;
public ClientMain(String address, int port) {
clientStart = ClientStart.at(adress, port);
}
public void start() throws StartFailedException {
clientStart.launch();
}
}
Это способ создания и запуска Сервера и Клиента.
Вы можете указать Клиенту и Серверу, как реагировать на определенные Объекты. Это должно быть сделано до [clientStart / serverStart] .launch (), указав:
clientStart.getCommunicationRegistration()
.register(MessageObject.class)
.addFirst(messageObject -> System.out.println(messageObject));
serverStart.getCommunicationRegistration()
.register(MessageObject.class)
.addFirst((session, messageObject) -> session.send(messageObject));
Теперь вы можете отправить что-то с Клиента на Сервер, указав:
clientStart.send(new MessageObject());
Этот пример является в основном эхо-сервером, который объясняется здесь .
Связь между обоими более подробно можно найти здесь или здесь .
Если вы перегружены произведенной продукцией, вы можете отрегулировать ее, указав:
// Choose only one.
NetComLogging.setLogging(Logging.trace());
NetComLogging.setLogging(Logging.debug());
NetComLogging.setLogging(Logging.info());
NetComLogging.setLogging(Logging.warn());
NetComLogging.setLogging(Logging.error());
NetComLogging.setLogging(Logging.disabled());
Что объясняется более подробно здесь .
NOTINGS
Обратите внимание, что этот проект только что запущен, а документация еще продолжается.
Обратите также внимание, что этот фреймворк все еще находится в бета-версии. Я не рекомендовал бы это для производственного использования, но я бы взглянул на это для личного использования.