Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
29
Добавлен:
05.06.2015
Размер:
20.76 Кб
Скачать

Міністерство освіти і науки, молоді та спорту України

Кіровоградський національний технічний університет

МТФ

Кафедра Програмного забезпечення

Дисципліна Обчислювальні системи

Лабораторна робота №3

Тема:Створення мерережної взаємодії за допомогою сокетів в середовищі ОС Windows та візуального програмування.

Виконав ст. гр. КІ-09-2

Кірнус Л.Є.

Перевірив викладач

Доренський О.П.

Кіровоград 2012

Завдання до лабораторної роботи:

Спроектуйте свій візуальний клієнт-сервер аналогічний до наведеного на малюнку 3.2 використовуючи компоненти TClineSocket/TserverSocket та організуйте обмін даними між процесами на клієнті та сервері через файли.

Лістинг

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

#include <vcl.h>

#include <string>

#pragma hdrstop

#include "Unit1.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TForm1::FormCreate(TObject *Sender)

{

ClientSocket1->Active = false;

ServerSocket1->Active = true;

StatusBar1->SimpleText = " Серверпрослуховуєпорт " +

IntToStr(ServerSocket1->Port) + " ... ";

}

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

void __fastcall TForm1::Button1Click(TObject *Sender)

{

if (ClientSocket1->Active) ClientSocket1->Active = false;

Server=ComboBox1->Text;

if (Server.Length() > 0)

{

ClientSocket1->Host = Server;

ServerSocket1->Active = true;

ClientSocket1->Active = true;

}

}

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

void __fastcall TForm1::Button2Click(TObject *Sender)

{

ClientSocket1->Close(); // закритиклієнта

ServerSocket1->Close(); // закритисервер

}

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

void __fastcall TForm1::ServerSocket1Accept(TObject *Sender,

TCustomWinSocket *Socket)

{

IsServer = true;

StatusBar1->SimpleText = "Запитназ'єднання з клієнтом IP:" +

Socket->RemoteAddress + " прийнято ";

}

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

void __fastcall TForm1::ClientSocket1Read(TObject *Sender,

TCustomWinSocket *Socket)

{

Memo2->Lines->Add(Socket->ReceiveText());

}

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

void __fastcall TForm1::ClientSocket1Disconnect(TObject *Sender,

TCustomWinSocket *Socket)

{

StatusBar1->SimpleText = " З'єднаннярозірвано";

}

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

void __fastcall TForm1::ClientSocket1Error(TObject *Sender,

TCustomWinSocket *Socket, TErrorEventErrorEvent, int&ErrorCode)

{

StatusBar1->SimpleText = " Помилказ'єднання з сервером " + Server;

ErrorCode = 0;

}

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

void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender,

TCustomWinSocket *Socket)

{

Memo2->Lines->Clear();

}

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

void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,

TCustomWinSocket *Socket)

{

Memo2->Lines->Add(Socket->ReceiveText()) ;

}

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

void __fastcall TForm1::ServerSocket1ClientDisconnect(TObject *Sender,

TCustomWinSocket *Socket)

{

StatusBar1->SimpleText = "З'єднання з сервером " + Socket->RemoteHost +

"встановленно";

}

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

void __fastcall TForm1::Memo1KeyDown(TObject *Sender, WORD &Key,

TShiftState Shift)

{

if (RadioGroup1->ItemIndex==-1)

{

ShowMessage("Опція для типу передачіданих не задана");

}

if (RadioGroup1->ItemIndex==0)

{

if (Key == VK_RETURN)

{

if (IsServer)

ServerSocket1->Socket->Connections[0]->SendText(Memo1->Lines->

Strings[Memo1->Lines->Count - 1]);

else

ClientSocket1->Socket->SendText( Memo1->Lines->Strings[Memo1->Lines-> Count - 1]);

}

}

else if (RadioGroup1->ItemIndex==1)

{

Memo1->Lines->LoadFromFile("1.txt");

if (Key == VK_RETURN)

{

if (IsServer)

ServerSocket1->Socket->Connections[0]->SendText(Memo1->Lines->

Strings[Memo1->Lines->Count - 1]);

else

ClientSocket1->Socket->SendText( Memo1->Lines->Strings[Memo1->Lines-> Count - 1]);

}

}

}

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

Соседние файлы в папке Вычислительные системы