Чат на 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.2015Java 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