Решение задачи с помощью программных средств

Автор работы: Пользователь скрыл имя, 19 Июня 2013 в 15:16, курсовая работа

Описание работы

Однако основной особенностью данных программ является обязательное подключение к серверу, что делает невозможным использование данных программ, например, в локальной вычислительной сети или просто между двумя компьютерами, без организации соответствующего сервера.
Используя современные средства визуальной разработки программного обеспечения, имеется возможность быстрого создания собственных программ по обмену сообщениями в локальной вычислительной сети. В данной курсовой работе рассматривается создание клиент-серверного приложения ЧАТ с помощью среды визуальной разработки приложений Borland C++ Builder версии 6.

Содержание работы

Введение ………………………………………………………………………. .3
Глава 1. Цели и задачи разработки ……………………………………………4
1.1 Цели разработки…………………………………………………………….4
1.2 Задачи разработки…………………………………………………………...4
Глава 2. Назначение и область применения …………………………………..5
2.1 Назначение программы……………………………………………………..5
2.2 Область применения программы ………………………………………….5
2.3 Постановка задачи и разработка алгоритма работы приложения……. …5
Глава 3. Решение задачи с помощью программных средств………………….8
3.1 Выбор среды разработки…………………………………………………….8
3.2 Разработка серверной части…………………………………………………8
3.3 Разработка клиентской части………………………………………………16
Заключение………………………………………………………………………24
Список используемых источников……………………………………………..25
Приложение………………………………………………………………...……

Файлы: 1 файл

Курсач!!!!.docx

— 122.70 Кб (Скачать файл)

void __fastcall TMainForm::ServerSocket1ClientConnect(TObject *Sender,

TCustomWinSocket *Socket)

{

// Добавляем его в список клиентов

ListBox_ClientList->Items->Add("Клиент");

}

//---------------------------------------------------------------------------

// Если произошла ошибка соединения  с клиентом

void __fastcall TMainForm::ServerSocket1ClientError(TObject *Sender,

TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)

{

ErrorCode = 0;

// В строке состояния пишем  "Ошибка соединения"

StatusBar1->Panels->Items[0]->Text = "Ошибка соединения";

// В списке режимов работы  выбираем "Off-Line"

ComboBox_ServerMode->ItemIndex = 1;

ListBox_ClientList->Clear(); // Очищаем список клиентов

}

//---------------------------------------------------------------------------

// Если клиент отсоединился

void __fastcall TMainForm::ServerSocket1ClientDisconnect(TObject *Sender,

TCustomWinSocket *Socket)

{

ListBox_ClientList->Clear(); // Очищаем список клиентов

}

//---------------------------------------------------------------------------

// Для отправки сообщения/файла  клиенту щелкаем в списке клиентов

// строчку "Клиент"

void __fastcall TMainForm::ListBox_ClientListDblClick(TObject *Sender)

{

SendForm->ShowModal(); // Показываем форму  для отправки сообщений

}

//---------------------------------------------------------------------------

// В случае, если от клиента  пришло текстовое сообщение

void __fastcall TMainForm::ServerSocket1ClientRead(TObject *Sender,

TCustomWinSocket *Socket)

{

// Заносим его в окно чата

SendForm->Memo_Chat->Lines->Add(Socket->ReceiveText());

}

//---------------------------------------------------------------------------

 

 

Приложение 2

 

Основной программный код серверной  части приложения "Чат". Файл " USendForm.cpp"

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

 

#include "USendForm.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TSendForm *SendForm;

//---------------------------------------------------------------------------

__fastcall TSendForm::TSendForm(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

// При нажатии на кнопку "Отправить  текст"

void __fastcall TSendForm::Button_SendTextClick(TObject *Sender)

{

// Добавляем отправляемый текст  в окно чата

Memo_Chat->Lines->Add("Сервер: "+Edit_SendText->Text);

// Отправляем текст клиенту

MainForm->ServerSocket1->Socket->Connections[0]->SendText("Сервер: " +

Edit_SendText->Text);

// Очищаем поле ввода текста

Edit_SendText->Text = "";

}

//---------------------------------------------------------------------------

// Отправка файла клиенту при  нажатии кнопки "Отправить файл"

void __fastcall TSendForm::Button_SendFileClick(TObject *Sender)

{

// Открываем диалоговое окно  выбора файла

if (SendForm->OpenDialog1->Execute())

{

// Если файл выбран, то используем  имя файла

if (SendForm->OpenDialog1->FileName != "")

{

//Открываем файл на чтение  и передаем его клиенту

TFileStream* f1 = new TFileStream(SendForm->OpenDialog1->FileName, fmOpenRead);

MainForm->ServerSocket2->Socket->Connections[0]->SendStream(f1);

//Добавляем в окно Чата сообщение,  что такой-то файл отправлен

Memo_Chat->Lines->Add("Файл " + OpenDialog1->FileName + " отправлен");

}

}

}

//---------------------------------------------------------------------------

 

 

Приложение 3

 

Основной программный код клиентской части приложения "Чат". Файл "UMainForm.cpp"

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "UMainForm.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TMainForm *MainForm;

//---------------------------------------------------------------------------

__fastcall TMainForm::TMainForm(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

// Выбор режима работы

void __fastcall TMainForm::ComboBox_ClientModeChange(TObject *Sender)

{

// Если On-Line

if (ComboBox_ClientMode->ItemIndex == 0)

{

// Присваиваем IP-адрес сервера свойству Address сокета 1

ClientSocket1->Address = Edit_IPadress->Text;

ClientSocket1->Active = True; // соединяемся с сервером

// Присваиваем IP-адрес сервера свойству Address сокета 2

ClientSocket2->Address = Edit_IPadress->Text;

ClientSocket2->Active = True; // соединяемся с сервером

// В строке состояния (внизу)  программы пишем "Работаем"

StatusBar1->Panels->Items[0]->Text = "Работаем";

// В список клиентов добавляем  "Сервер"

ListBox_ClientList->Items->Add("Сервер");

}

// Если Off-Line

if (ComboBox_ClientMode->ItemIndex == 1)

{

ClientSocket1->Active = False; // Деактивируем  соединение сокета 1

ClientSocket2->Active = False; // Деактивируем соединение сокета 2

// В строке состояния программы  пишем "Не работаем"

StatusBar1->Panels->Items[0]->Text = "Не работаем";

// Очищаем список клиентов

ListBox_ClientList->Clear();

}

}

//---------------------------------------------------------------------------

// В случае закрытия программы  разрываем соединение с сервером

void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)

{

ClientSocket1->Active = False; // Деактивируем  соединение сокета 1

ClientSocket2->Active = False; // Деактивируем  соединение сокета 2

}

//---------------------------------------------------------------------------

// Если произошла ошибка соединения  с сервером

void __fastcall TMainForm::ClientSocket1Error(TObject *Sender,

TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)

{

ErrorCode = 0;

// В строке состояния пишем  "Ошибка соединения"

StatusBar1->Panels->Items[0]->Text = "Ошибка  соединения";

// В списке режимов работы  выбираем "Off-Line"

ComboBox_ClientMode->ItemIndex = 1;

ListBox_ClientList->Clear(); // Очищаем список  клиентов

}

//---------------------------------------------------------------------------

// При отсоединении от сервера

void __fastcall TMainForm::ClientSocket1Disconnect(TObject *Sender,

TCustomWinSocket *Socket)

{

// В списке режимов работы  указываем "Off-Line"

ComboBox_ClientMode->ItemIndex = 1;

// В строке состояния программы  пишем "Не работаем"

StatusBar1->Panels->Items[0]->Text = "Не работаем";

// Очищаем список клиентов

ListBox_ClientList->Clear();

}

//---------------------------------------------------------------------------

// Для отправки сообщения серверу  щелкаем в списке клиентов

// строчку "Сервер"

void __fastcall TMainForm::ListBox_ClientListDblClick(TObject *Sender)

{

SendForm->ShowModal(); // Показываем форму для отправки сообщений

}

//---------------------------------------------------------------------------

// При получении сообщения от  сервера добавляем его в окно  чата

void __fastcall TMainForm::ClientSocket1Read(TObject *Sender,

TCustomWinSocket *Socket)

{

SendForm->Memo_Chat->Lines->Add(ClientSocket1->Socket->ReceiveText());

}

//---------------------------------------------------------------------------

// Прием файла

void __fastcall TMainForm::ClientSocket2Read(TObject *Sender,

TCustomWinSocket *Socket)

{

ShowMessage("Принимается файл...");

//Открывается диалог сохранения  файла

if (SendForm->SaveDialog1->Execute())

{

//Если указали имя файла при  сохранении файла

if (SendForm->SaveDialog1->FileName != "")

{

Pointer buff; // объявляем буфер

int iLen; // указываем длину буфера

// Создаем файл

TFileStream* f2 = new TFileStream(SendForm->SaveDialog1->FileName, fmCreate);

// уточняем размер данных, полученных  от сервера

iLen = ClientSocket2->Socket->ReceiveLength();

// выделяем память для буфера

buff = GetMemory(iLen);

//копируем буфер сокета в  буфер buff

ClientSocket2->Socket->ReceiveBuf(buff,iLen);

//передаем данные из буфера  buff в файл

f2->Write(buff,iLen);

f2->Free();

// добавляем в окно чата сообщение,  что файл получен

SendForm->Memo_Chat->Lines->Add("Файл " + SendForm->SaveDialog1->FileName + " получен");

}

}

}

//---------------------------------------------------------------------------

 

 

Приложение 4

 

Основной программный код клиентской части приложения "Чат". Файл " USendForm.cpp"

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "USendForm.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TSendForm *SendForm;

//---------------------------------------------------------------------------

__fastcall TSendForm::TSendForm(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

// При нажатии на кнопку "Отправить  текст"

void __fastcall TSendForm::Button_SendTextClick(TObject *Sender)

{

// Добавляем отправляемый текст  в окно чата

Memo_Chat->Lines->Add("Клиент: "+Edit_SendText->Text);

// Отправляем текст серверу

MainForm->ClientSocket1->Socket->SendText("Клиент: " +

Edit_SendText->Text);

// Очищаем поле ввода текста

Edit_SendText->Text = "";

Размещено на Allbest.ru

4




Информация о работе Решение задачи с помощью программных средств