Лучшая структура для сетевого программирования Java?

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

Я хочу использовать Java Swing, MySQL для базы данных и eclipse в качестве IDE. Итак, какова лучшая структура для упрощения сетевого программирования, потому что я не хочу начинать с нуля.

Я читал о Netty и Apache Mina, и не знаю, хорошо ли это для меня в моем случае.


person majd obeid    schedule 19.03.2012    source источник


Ответы (2)


см. ссылку netty-vs-mina. Ваш вопрос о «лучшем» - это не совсем формат вопросов и ответов, и его не следует задавать на этом форуме.

person Abe    schedule 20.03.2012

Этому вопросу 5 1/2 лет, но он еще не получил ответа и не был закрыт. Вот почему я пишу это, предполагая, что спрашивающий имел в виду Модель-Сервер-Клиент < / а>.


Я бы рекомендовал попробовать 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());

Более подробно это объясняется здесь.


ЗАМЕЧАНИЯ

Обратите внимание, что этот проект только что запущен, и документация все еще продолжается.

Также обратите внимание, что этот фреймворк все еще находится в стадии бета-тестирования. Я бы не рекомендовал его для производственного использования, но я бы посмотрел на него для личного использования.

person Thorben Kuck    schedule 09.10.2017