Автор работы: Пользователь скрыл имя, 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
Приложение………………………………………………………………...……
void __fastcall TMainForm::
TCustomWinSocket *Socket)
{
// Добавляем его в список
ListBox_ClientList->Items->
}
//----------------------------
// Если произошла ошибка
void __fastcall TMainForm::
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
ErrorCode = 0;
// В строке состояния пишем "Ошибка соединения"
StatusBar1->Panels->Items[0]->
// В списке режимов работы выбираем "Off-Line"
ComboBox_ServerMode->ItemIndex = 1;
ListBox_ClientList->Clear(); // Очищаем список клиентов
}
//----------------------------
// Если клиент отсоединился
void __fastcall TMainForm::
TCustomWinSocket *Socket)
{
ListBox_ClientList->Clear(); // Очищаем список клиентов
}
//----------------------------
// Для отправки сообщения/файла
клиенту щелкаем в списке
// строчку "Клиент"
void __fastcall TMainForm::ListBox_
{
SendForm->ShowModal(); // Показываем форму для отправки сообщений
}
//----------------------------
// В случае, если от клиента пришло текстовое сообщение
void __fastcall TMainForm::
TCustomWinSocket *Socket)
{
// Заносим его в окно чата
SendForm->Memo_Chat->Lines->
}
//----------------------------
Приложение 2
Основной программный код
//----------------------------
#include <vcl.h>
#pragma hdrstop
#include "USendForm.h"
//----------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TSendForm *SendForm;
//----------------------------
__fastcall TSendForm::TSendForm(
: TForm(Owner)
{
}
//----------------------------
// При нажатии на кнопку "Отправить текст"
void __fastcall TSendForm::Button_
{
// Добавляем отправляемый текст в окно чата
Memo_Chat->Lines->Add("Сервер: "+Edit_SendText->Text);
// Отправляем текст клиенту
MainForm->ServerSocket1->
Edit_SendText->Text);
// Очищаем поле ввода текста
Edit_SendText->Text = "";
}
//----------------------------
// Отправка файла клиенту при нажатии кнопки "Отправить файл"
void __fastcall TSendForm::Button_
{
// Открываем диалоговое окно выбора файла
if (SendForm->OpenDialog1->
{
// Если файл выбран, то используем имя файла
if (SendForm->OpenDialog1->
{
//Открываем файл на чтение и передаем его клиенту
TFileStream* f1 = new TFileStream(SendForm->
MainForm->ServerSocket2->
//Добавляем в окно Чата
Memo_Chat->Lines->Add("Файл " + OpenDialog1->FileName + " отправлен");
}
}
}
//----------------------------
Приложение 3
Основной программный код
//----------------------------
#include <vcl.h>
#pragma hdrstop
#include "UMainForm.h"
//----------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
//----------------------------
__fastcall TMainForm::TMainForm(
: TForm(Owner)
{
}
//----------------------------
// Выбор режима работы
void __fastcall TMainForm::ComboBox_
{
// Если On-Line
if (ComboBox_ClientMode->
{
// Присваиваем 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]->
// В список клиентов добавляем "Сервер"
ListBox_ClientList->Items->
}
// Если Off-Line
if (ComboBox_ClientMode->
{
ClientSocket1->Active = False; // Деактивируем соединение сокета 1
ClientSocket2->Active = False; // Деактивируем соединение сокета 2
// В строке состояния программы пишем "Не работаем"
StatusBar1->Panels->Items[0]->
// Очищаем список клиентов
ListBox_ClientList->Clear();
}
}
//----------------------------
// В случае закрытия программы
разрываем соединение с
void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
{
ClientSocket1->Active = False; // Деактивируем соединение сокета 1
ClientSocket2->Active = False; // Деактивируем соединение сокета 2
}
//----------------------------
// Если произошла ошибка
void __fastcall TMainForm::ClientSocket1Error(
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
ErrorCode = 0;
// В строке состояния пишем "Ошибка соединения"
StatusBar1->Panels->Items[0]->
// В списке режимов работы выбираем "Off-Line"
ComboBox_ClientMode->ItemIndex = 1;
ListBox_ClientList->Clear(); // Очищаем список клиентов
}
//----------------------------
// При отсоединении от сервера
void __fastcall TMainForm::
TCustomWinSocket *Socket)
{
// В списке режимов работы указываем "Off-Line"
ComboBox_ClientMode->ItemIndex = 1;
// В строке состояния программы пишем "Не работаем"
StatusBar1->Panels->Items[0]->
// Очищаем список клиентов
ListBox_ClientList->Clear();
}
//----------------------------
// Для отправки сообщения
// строчку "Сервер"
void __fastcall TMainForm::ListBox_
{
SendForm->ShowModal(); // Показываем форму для отправки сообщений
}
//----------------------------
// При получении сообщения от сервера добавляем его в окно чата
void __fastcall TMainForm::ClientSocket1Read(
TCustomWinSocket *Socket)
{
SendForm->Memo_Chat->Lines->
}
//----------------------------
// Прием файла
void __fastcall TMainForm::ClientSocket2Read(
TCustomWinSocket *Socket)
{
ShowMessage("Принимается файл.
//Открывается диалог
if (SendForm->SaveDialog1->
{
//Если указали имя файла при сохранении файла
if (SendForm->SaveDialog1->
{
Pointer buff; // объявляем буфер
int iLen; // указываем длину буфера
// Создаем файл
TFileStream* f2 = new TFileStream(SendForm->
// уточняем размер данных, полученных от сервера
iLen = ClientSocket2->Socket->
// выделяем память для буфера
buff = GetMemory(iLen);
//копируем буфер сокета в буфер buff
ClientSocket2->Socket->
//передаем данные из буфера buff в файл
f2->Write(buff,iLen);
f2->Free();
// добавляем в окно чата
SendForm->Memo_Chat->Lines->
}
}
}
//----------------------------
Приложение 4
Основной программный код
//----------------------------
#include <vcl.h>
#pragma hdrstop
#include "USendForm.h"
//----------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TSendForm *SendForm;
//----------------------------
__fastcall TSendForm::TSendForm(
: TForm(Owner)
{
}
//----------------------------
// При нажатии на кнопку "Отправить текст"
void __fastcall TSendForm::Button_
{
// Добавляем отправляемый текст в окно чата
Memo_Chat->Lines->Add("Клиент: "+Edit_SendText->Text);
// Отправляем текст серверу
MainForm->ClientSocket1->
Edit_SendText->Text);
// Очищаем поле ввода текста
Edit_SendText->Text = "";
Размещено на Allbest.ru
4
Информация о работе Решение задачи с помощью программных средств