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

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

Федеральное государственное бюджетное

образовательное учреждение

высшего профессионального образования

«Белгородский государственный технологический университет

им. В.Г.Шухова»

Губкинский филиал

ЛАБОРАТОРНАЯ РАБОТА №3

по предмету: «Интерфейсы периферийных устройств »

Выполнил студент: Бодриков

Евгений Павлович

Группа: БИВТ-31сз

Направление: 230100.62

Информатика и вычислительная техника

Проверил: Черных В.А.

г.Губкин 2014г

Задание:

Написать программу обмена информацией между двумя ПК по средствам протокола tcpip

Код программы:

Клиент:

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdIPWatch, ScktComp;

type

TForm2 = class(TForm)

ClientSocket1: TClientSocket;

IdIPWatch1: TIdIPWatch;

Edit1: TEdit;

Label1: TLabel;

Button1: TButton;

Button2: TButton;

Edit2: TEdit;

Button3: TButton;

Edit3: TEdit;

Label2: TLabel;

Memo1: TMemo;

Edit4: TEdit;

Label3: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

// procedure Button3Click(Sender: TObject);

procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);

procedure FormDestroy(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Edit2KeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);

begin

ClientSocket1.Port:= StrToInt(Edit3.Text);

ClientSocket1.Address := Edit1.Text; {Адрес сервера}

if not ClientSocket1.Active then begin

ClientSocket1.Active := True;

Form2.Caption:= 'Клиент подключен'; end;

end;

procedure TForm2.ClientSocket1Read(Sender: TObject;

Socket: TCustomWinSocket);

begin

Memo1.Lines.Add(Socket.ReceiveText);

end;

procedure TForm2.Button2Click(Sender: TObject);

begin

If Edit1.Text <> '' then

ClientSocket1.Socket.SendText(Edit1.text);

Edit1.Text := '';

end;

procedure TForm2.FormDestroy(Sender: TObject);

begin

ClientSocket1.Active := False; {Выключаем клиента}

ClientSocket1.Close; {Закрываем сокет}

Close;

end;

Сервер:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdIPWatch, ScktComp;

type

TForm1 = class(TForm)

ServerSocket1: TServerSocket;

IdIPWatch1: TIdIPWatch;

Button1: TButton;

Button2: TButton;

ListBox1: TListBox;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure ServerSocket1ClientRead(Sender: TObject;

Socket: TCustomWinSocket);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

form1.Caption:='Сервер активен'+ IdIPWatch1.LocalIP;

ServerSocket1.Active := True;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

ServerSocket1.Active := False;

ServerSocket1.Close;

Close;

end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;

Socket: TCustomWinSocket);

var

S: String;

I: Integer;

begin

{Добавляем к строке сообщения клиента идентификатор его сокета}

S := Socket.ReceiveText;

ListBox1.Items.Add(S); {Добавляем сообщение в список}

{Перебираем все установленные соединения}

For i := 0 to ServerSocket1.Socket.ActiveConnections - 1 do

{Проверяем - если идентификатор очередного сокета не совпадает

с идентификатором сокета, приславшего сообщение, то...}

if ServerSocket1.Socket.Connections[i].SocketHandle <> Socket.SocketHandle then

{... посылаем очередной клиентской программе новое сообщение}

ServerSocket1.Socket.Connections[i].SendText(S);

end;

end.

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdIPWatch, ScktComp;

type

TForm2 = class(TForm)

ClientSocket1: TClientSocket;

IdIPWatch1: TIdIPWatch;

Edit1: TEdit;

Label1: TLabel;

Button1: TButton;

ListBox1: TListBox;

Button2: TButton;

Edit2: TEdit;

Button3: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

// procedure Button3Click(Sender: TObject);

procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);

procedure FormDestroy(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);

begin

ClientSocket1.Address := Edit1.Text; {Адрес сервера}

if not ClientSocket1.Active then

ClientSocket1.Active := True;

end;

procedure TForm2.ClientSocket1Read(Sender: TObject;

Socket: TCustomWinSocket);

begin

Listbox1.Items.Add(Socket.ReceiveText);

end;

procedure TForm2.Button2Click(Sender: TObject);

begin

If Edit1.Text <> '' then

ClientSocket1.Socket.SendText(Edit1.text);

Edit1.Text := '';

end;

procedure TForm2.FormDestroy(Sender: TObject);

begin

ClientSocket1.Active := False; {Выключаем клиента}

ClientSocket1.Close; {Закрываем сокет}

Close;

end;

procedure TForm2.Button3Click(Sender: TObject);

begin

If Edit2.Text <> '' then

ClientSocket1.Socket.SendText(Edit2.text); {..посылаем его на сервер}

Edit2.Text := '';

end;

end.

Соседние файлы в папке л.р (Интерфейсы периферийных устройств)