Чат на Java

Последовательность написания сетевого чата. Создание сервера, рассылающего информацию о присоединении и отключении клиентов. Реализация в клиенте двух потоковых классов, их основные функции и состав сообщений. Описание алгоритма программы, исходный код.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 22.02.2013
Размер файла 227,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru

Размещено на http://www.allbest.ru

Министерство образования и науки РФ

Федеральное агентство по образованию

ГОУ ВПО “Уральский государственный технический университет - УПИ” им. Б. Н. Ельцина

Факультет: Радиотехнический институт - РтФ

Кафедра:Теоретических основ радиотехники

Специальность: Информационная безопасность телекоммуникационных систем

ОТЧЕТ

По курсовой работе

дисциплина «Средства и методы программирования»

Студент

группа Р-27072, Рогожин В. И.

Руководитель:

Тренихин Владимир Александрович

Задание

Написать сетевой чат. Сервер рассылает клиентам информацию о присоединении и отключении клиентов.

Описание алгоритма

сетевой чат сервер клиент

Курсовой проект состоит из двух частей:

Клиент

Сервер

Клиент подключается к серверу и посылает серверу сообщение вида «@Имя_клиента». Получив такого вида сообщение, каждый из клиентов выведет сообщение о подключении пользователя с указанным именем. Пред отключением клиента от сервера, на сервер посылается сообщение вида «#Имя_клиента», получив которое, каждый из клиентов выведет сообщение об отключении пользователя с данным именем. После ввода отправляемого сообщения и нажатия кнопки «Send» сообщение передается на сервер, после чего возвращается и выводится в окне чата. В клиенте реализовано два потоковых класса. Один, из которых отвечает за приём и отправку сообщений, а второй за интерфейс и обработку сообщений.

На сервере реализовано два потоковых класса. Первый принимает сообщения от всех подключённых клиентов и заносит их во временную переменную. Во втором классе происходит отправка сообщений из временной переменой клиентам, с некоторым интервалом (для того чтобы клиенты успевали считывать сообщения). По большому счёту, сервер является ретранслятором сообщений клиентов, и никак не вмешивается в их обработку.

Клиент Сервер

Исходный код

Клиент

package pak1;

import java.net.*;

import java.io.*;

import java.awt.*;

import java.awt.event.*;

class FieldWindow extends Frame implements ActionListener

{

private static final long serialVersionUID = 1L;

static TextArea chat=new TextArea("",25,65,TextArea.SCROLLBARS_VERTICAL_ONLY);

TextField str=new TextField(58);

Button send=new Button("Send");

Button ext=new Button("Exit");

static String command="";

static String incopy=null;

static String mess=null;

static String name="Vova";

Frame wind1=new Frame(name);

static int len,i=0,u=0;

FieldWindow()

{

wind1.setLayout(new FlowLayout());

wind1.add(chat);

wind1.add(str);

wind1.add(send);

ext.addActionListener(this);

send.addActionListener(this);

wind1.add(ext);

wind1.setSize(500,500);

wind1.setLocation(120,60);

wind1.setResizable(false);

wind1.setVisible(true);

}

public void start()

{

if(NetClientThread.Errors!=null)

{

chat.append(NetClientThread.Errors);

NetClientThread.Errors=null;

}

while(true)

{

if((NetClientThread.Message!=null)&&(NetClientThread.Message!=""))

{

incopy=NetClientThread.Message;

NetClientThread.Message=null;

switch(incopy.charAt(0))

{

case '@':

len=incopy.length()-1;

for(i=1;i<=len;i++)

{

command=command+incopy.charAt(i);

}

i=1;

chat.append("В чат вошел пользаватель: "+command+"\n");

incopy=null;

command="";

break;

case '#':

len=incopy.length()-1;

for(i=1;i<=len;i++)

{

command=command+incopy.charAt(i);

}

i=1;

chat.append("Из чата вышел пользаватель: "+command+"\n");

incopy=null;

command="";

break;

default:

chat.append(incopy);

chat.append("\n");

}

}

try

{

Thread.sleep(10);

}

catch (InterruptedException e)

{

e.printStackTrace();

}

}

}

public void actionPerformed(ActionEvent e)

{

if(e.getSource()==ext)

{

NetClientThread.send("#"+name);

NetClientThread.out.close();

try

{

NetClientThread.in.close();

}

catch (IOException e2)

{

e2.printStackTrace();

}

try

{

NetClientThread.s.close();

}

catch (IOException e1)

{

e1.printStackTrace();

}

System.exit(0);

}

if(e.getSource()==send)

{

mess=str.getText();

NetClientThread.send(mess);

str.setText("");

}

}

}

public class NetClientThread extends Thread

{

static String Errors=null;

static String Message=null;

static BufferedReader in = null;

static PrintWriter out;

static Socket s = null;

static String msg =null;

public NetClientThread()

{

try

{

s = new Socket("127.0.0.1", 8030);

InputStreamReader isr = new InputStreamReader (s.getInputStream());

in = new BufferedReader(isr);

out=new PrintWriter(s.getOutputStream(), true);

} catch (IOException e) {Errors="Ошибка соединения";}

}

public static void main(String[] args)

{

NetClientThread nct = new NetClientThread();

nct.start();

FieldWindow newwindow=new FieldWindow();

newwindow.start();

}

public void run()

{

send("@"+FieldWindow.name);

while (true)

{

try

{

Message = in.readLine();

}

catch (IOException e) {break;}

}

FieldWindow.chat.append("Ошибка соединения с сервером");

}

public static void send(String msg)

{

out.println(msg);

out.flush();

}

}

Сервер

package pak1;

import java.net.*;import java.io.*;

class Incoming extends Thread{

Socket sock;

BufferedReader in = null;

String soobsh=null;

Incoming(Socket s)

{

sock = s;

try

{

InputStreamReader isr = new InputStreamReader (sock.getInputStream());

in = new BufferedReader(isr);

}

catch (IOException e) {System.out.println("ошибка: " + e);}

}

public void run()

{

while (true)

{

try

{

soobsh= in.readLine();

if(soobsh!=null)

{

NetServerThread.Message = soobsh;

soobsh=null;

}

}

catch (IOException e) {break;}

}

}

}

public class NetServerThread extends Thread

{

String lastm;

Socket socket;

int i=0;

PrintStream ps;

public static String Message=null;

public NetServerThread(Socket s)

{

lastm=null;

socket = s;

try

{

ps = new PrintStream(s.getOutputStream());

}

catch (IOException e)

{

System.out.println("ошибка: " + e);

}

}

public static void main(String[] args) {

try {

ServerSocket server = new ServerSocket(8030);

while (true)

{

Socket s = null;

s = server.accept();

NetServerThread nst = new NetServerThread(s);

Incoming incom = new Incoming(s);

nst.start();

incom.start();

}

} catch(IOException e) {

System.out.println("ошибка: " + e);}

}

public void run()

{

while (true)

{

if((Message!=null)&&(lastm!=Message))

{

lastm=Message; send(lastm);

}

try

{

Thread.sleep(100);

}

catch (InterruptedException e) {e.printStackTrace();}

}

}

public void send(String msg)

{

ps.println(msg);

ps.flush();

}

} Размещено на www.allbest.

...

Подобные документы

  • Описание и установка интегрированной среды разработки Eclipse. Описание языка Java. Описание классов и методов, пакетов, использованных в программе, сервера и клиента. Разработка руководства пользователя для клиента и сервера. Пример работы чата.

    курсовая работа [443,5 K], добавлен 18.05.2015

  • Требования, предъявленные к полноценному локальному чату. Протокол передачи данных TCP. Описание программы сервера. Этапы разработки программного продукта. Функция приема сообщений от сервера. Принятие и отправка сообщений всем пользователям чата.

    курсовая работа [447,0 K], добавлен 21.01.2016

  • Разработка игрового проекта на игровом движке Unity 3D в среде программирования MS Visual Studio 2017. Блок-схема алгоритма работы приема сообщений с сервера на клиенте с упрощенным описанием выполняемых команд. Реализация пользовательского интерфейса.

    курсовая работа [1,5 M], добавлен 10.07.2017

  • Принципы написания консольных приложений на языке Java в среде Eclipse. Составление программы завтрака на основе списка продуктов, передаваемых в качестве параметров в командной строке. Создание пакета для классов, интерфейса, базового класса иерархии.

    лабораторная работа [1,2 M], добавлен 01.05.2014

  • Изучение объектно-ориентированного языка программирования Java, его функциональные возможности. Создание программного кода. Описание классов и методов, использованных в программе. Руководство пользователя, запуск сервера и клиентского приложения.

    курсовая работа [1,8 M], добавлен 16.09.2015

  • Описание алгоритма хода ЭВМ в режиме "пользователь-компьютер" в игре "Морской бой". Описание совокупности классов, их полей и методов. Разработка интерфейса и руководства пользователя по проведению игры. Листинг программы, написанной на языке Java.

    курсовая работа [645,0 K], добавлен 26.03.2014

  • Сетевые возможности языков программирования. Преимущества использования Java-апплетов. Классы, входящие в состав библиотеки java.awt. Создание пользовательского интерфейса. Сокетное соединение с сервером. Графика в Java. Значения составляющих цвета.

    курсовая работа [508,1 K], добавлен 10.11.2014

  • Описание предметной области коучинга, его основные понятия. Разработка, реализация прикладной программы на базе WindowsForms. Описание пользовательских классов и реализованных форм. Описание принципа работы программы, структур хранения и получения данных.

    курсовая работа [1,3 M], добавлен 09.09.2012

  • Основа пользовательского интерфейса. Возможности пакетов java.awt.geom, java.awt, классов java.awt.Graphics и java.awt.Graphics2D. Основные графические примитивы и работа с потоками. Листинг программы и составление композиции аффинных преобразований.

    методичка [525,3 K], добавлен 30.06.2009

  • История развития языка программирования Java. История тетриса - культовой компьютерной игры, изобретённой в СССР. Правила проведения игры, особенности начисления очков. Создание интерфейса программы, ее реализация в среде Java, кодирование, тестирование.

    курсовая работа [168,1 K], добавлен 27.09.2013

  • Выполнение Java-программы. Набор программ и классов JDK. Объектно-ориентированное программирование в Java. Принципы построения графического интерфейса. Компонент и контейнер графической системы. Апплеты как программы, работающие в среде браузера.

    курсовая работа [42,3 K], добавлен 08.02.2011

  • Обзор технологии OpenStack, область ее применения. Реализация библиотеки классов. Реализация базовых классов и интерфейсов архитектуры. Создание виртуального сервера. Интеграция разработанной библиотеки классов и архитектура проектного решения.

    дипломная работа [1,0 M], добавлен 09.08.2016

  • Разработка и создание игры "Змейка". Использование динамически-активных принципов языка Java. Графические объекты программы. Описание игры, правила, теоретические сведения. Классы приложения. Типы данных. Реализация. Метод. Объект. Блок-схема игры.

    курсовая работа [12,4 K], добавлен 18.06.2008

  • Исследование симметричных алгоритмов блочного шифрования. Минусы и плюсы алгоритма IDEA. Разработка программы аутентификации пользователя и сообщений на основе алгоритма IDEA. Выбор языка программирования. Тестирование и реализация программного средства.

    курсовая работа [314,2 K], добавлен 27.01.2015

  • Java Foundation Classes, основные концепции. Исходная иерархия классов Abstract Window Toolkit. Представители пользовательского интерфейса. Обработка событий в JavaBeans. Элементы управления, многострочное поле JText. Листинг программы TextEditor.

    курсовая работа [220,6 K], добавлен 26.06.2013

  • Создание программы для поиска минимума функции двух вещественных переменных в заданной области с помощью генетического алгоритма. Генетические алгоритмы и операторы. Создание начальной популяции. Размножение. Мутация и селекция. Тестирование программы.

    курсовая работа [131,6 K], добавлен 22.02.2015

  • Описание языков программирования Java и JavaFX. Среда разработки NetBeans и класс численных методов. Архитектура и принцип работы апплета с понятным пользовательским интерфейсом. Разработка алгоритма программы на примере модели межвидовой конкуренции.

    курсовая работа [1023,2 K], добавлен 19.09.2012

  • Описание пакета прикладной программы Net Beans 8.1. Разработка пользовательского интерфейса апплета. Создание рамочных окон на базе фреймов библиотеки java.swing. Изменение цвета текстовых данных. Проектирование и создание инфологической модели апплета.

    контрольная работа [1,8 M], добавлен 11.07.2016

  • Создание приложения для шифрования–дешифрования текста тремя алгоритмами (алгоритм "Цезаря","Модифицированного Цезаря", "Скитала"). Исходный текст компонента. Инструкция пользователя, возможность просмотра примерного алгоритма. Исходный текст программы.

    курсовая работа [2,8 M], добавлен 27.02.2015

  • Теоретическое исследование вопроса и практическое применение. Общие сведения о графах. Алгоритм Дейкстры. Особенности работы в среде. Программная реализация. Описание алгоритма и структуры программы. Описание программных средств. Текст программы.

    курсовая работа [1,0 M], добавлен 27.11.2007

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.