2015-09-25 2 views
1

Я пытаюсь написать instant messenger, который имеет client application и server application, которые должны запускаться отдельно на каждом клиентском компьютере и на сервере. , конечно, клиенты общаются друг с другом через socket. , и я сохраняю информацию каждого клиента на сервере. это означает, что приложение клиента должно отправить регистрационную информацию на сервер и Waite, чтобы услышать результат. Я хочу знать, что является лучшим способом отправки информации на сервер? должен ли я отправить его через тот же socket или что?Как отправить информацию для входа на сервер через сокет в java

+0

Да, вам нужно открыть 'InputStream' и' OutputStream' для записи байтов на сервер для клиента.Для приложений типа входа мне нравится использовать 'ObjectInputStream' и' ObjectOutputStream', которые только мне ... – 3kings

+0

Используйте InputStream и Outputstream из Socket для записи через. – Shriram

+0

хорошо. Я собираюсь использовать те же потоки ввода/вывода для чата. это не проблема? –

ответ

2

Программирование сокетов - интересная тема в java. Он может использовать две основные методологии для программирования мгновенного мессенджера.

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

1. Сервер-Клиент метода

Это требует два различных progammes таких клиентских приложений и сервер приложений. Вход пользователя на стороне сервера может быть выполнен только с помощью этого метода. Можно передавать данные, которые кодируются json или xml. Полученные данные декодируются в объект. Затем можно идентифицировать данные - это сообщение или информация для входа на сервер. Рассмотрим следующий пример.

  • Создание объекта данных для передачи

класса TransmitData {

private String userName;//user name of sender 
    private String password;//password of the sender 
    private String toUser;//user name of receiver 
    private String type;//message type which is a message or login information 
    //message types 
    public static final String MESSAGE = "MESSAGE"; 
    public static final String LOGIN_INFORMATION = "LOGIN_INFORMATION"; 

    public TransmitData() { 
    } 

    //add getters and setters here 

} 
  • Затем конвертировать в XML или JSON строки

    <transmit-data> <user-name></user-name> <password></password> <to-user></to-user> <message-type></message-type> </transmit-data>

  • После этого отправить данные XML через сокет-соединение

  • Decode сообщение на сервере

  • Определить тип сообщения и выполнить следующие действия

Однако сервер-клиент для обмена мгновенными сообщениями не могут быть использованы, когда сервер вне форума. Поэтому это не рекомендуется при использовании в локальной сети.

2. Peer-To-Peer метод

Peer-To-Peer экземпляра messegers имеет только одну программу, которая, содержащую как сервер и клиент кодирования. Это сложно разработать и выйти из логики при использовании входа на серверную учетную запись пользователя. Но вы можете легко добавить клиентскую логику в мессенджер. Можно добавить функции для поиска и добавления других пользователей в адресную книгу. Тогда я умру при использовании. В качестве преимущества он не требует сервера. Я думаю, что это очень хорошо, когда вы используете мессенджер в локальной сети.