На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Чат на сокетах Java



Готов новый проект – чат Java. В нем посредством классов ServerSocket и Socket реализован обмен текстовыми сообщениями и файлами. Программа состоит из двух приложений - сервер и клиент. Первоначально запускается сервер, ждет подключения (запуска) клиента. После запуска клиента, они автоматически соединяются, и появляется возможность обмениваться по сокетам информацией. Работа происходит на одном компьютере (localhost, 127.0.0.1).



Как сервер, так и клиент могут отправлять друг другу тексты и файлы любого формата с помощь интерфейса Swing. История переписки хранится в базе данных типа SQLIte на сервере. Клиент и сервер могут вывести историю переписки за указанный период времени (год-месяц-число-час-минута). Клиент может быть только один.

В общем, все просто. Запускаете сервер, он ждет подключение клиента. После запуска клиента он автоматически подключается к серверу – все показывается на обоих экранах. После подключения вводите текст и нажимаете «Enter» - он отправляется собеседнику.

Если компоненты не в таком порядке, как на скрине, то можно порастягивать окно и потом в коде поставить нужные значения.

Можно отправлять файлы – кнопка «Отправить файл» - он появится рядом с файлом программы. Чтобы показать переписку, необходимо выбрать дату и время начала (часы и минуты), а также дату и время конца.

База данных SQlite состоит из одной таблицы, Чтобы посмотреть, что внутри файла baza001.sqlite, можно использовать DB Browser for SQLite - это чтобы было проще смотреть внутренности, я часто использую.

Код

Получилось два проекта: IntelliJ IDEA сервер, в Eclipse – клиент. Но вообще проекты универсальные и откроются в любой распространенной IDE для java.

Каждый код в своем файле. Server.java и Client.java. Есть небольшие комментарии, в методах используется обработка ошибок. Код написан правильно, но не идеально – так, как будто писал студент, а не реальный программист.

Вот, например, метод для записи сообщения в базу данных:

 
private static void InsertMail(String message, int tip) throws SQLException {
        Connection dbConnection = null;
        Statement statement = null;
        long unixTime = System.currentTimeMillis() / 1000L;
        if (tip!=1) {
            String insertSQL = "INSERT INTO mails (id, mail, 'datetim') values (NULL , '" + message +  "', '" + unixTime + "')";
            try {
                dbConnection = getDBConnection();
                statement = dbConnection.createStatement();

                // выполнить SQL запрос
                statement.execute(insertSQL);
                System.out.println("Успешно!");
            } catch (SQLException e) {
                System.out.println(e.getMessage());
            } finally {
                if (statement != null) {
                    statement.close();
                }
                if (dbConnection != null) {
                    dbConnection.close();
                }
            }
        }
    }
В этом коде вообще говоря лучше бы использовать класс PreparedStatement и его метод executeUpdate(), но и код выше вполне рабочий и отлично подойдет для учебного проекта.

Также необязательно использовать NULL для id таблицу у которой настроен автоинкремент на это поле. Но это не ошибка, а, скажем так, мелочь о которой студент не обязательно знает.

Если вам нужна готовая программа на java или консультация по программированию на этом языке – пишите. Все услуги платные.



Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, программы, java, чат, сокеты

Читайте также:



Программист и системный администратор: два в одном
Когда заработает поддомен?


© upread.ru 2013-2023
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.