close

Вход

Забыли?

вход по аккаунту

?

3 лаба

код для вставкиСкачать
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
"ОРЕНБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ"
Аэрокосмический институт
Кафедра систем автоматизации производства
ОТЧЕТ
по лабораторной работе №7 по дисциплине "Электроника"
Исследование биполярных транзисторов в программе Electronic Workbench
ОГУ 220301.65.9013. О
Руководитель: Ю.И. Коротченко " " 2013г.
Исполнители: студенты группы 10 АТП
О.В. Волков И.С. Евграшин Ю.Э. Волков
Д.Г. Буликешев " " 2013г.
Оренбург 2013
Содержание
1 Цель работы3
2 Задание на лабораторную работу4
3 Теоретическая часть5
4 Практическая часть лабораторной работы6
4.1Создание программы для обмена сообщениями6
4.2 Создание программы для передачи массивов12
Вывод17
Список использованных источников18
1 Цель работы
Цели: - разобрать предлагаемый теоретический материал, изучить клиент-серверное взаимодействие посредством сокетов;
- изучить свойства компонентов TClientSocket и TServerSocket/
2 Задание на лабораторную работу
1. Создать программу для обмена сообщения в среде Delphi на основе компонентов TClientSocket и TServerSocket;
2. Добавить процедуру обмена сообщениями в обе стороны;
3. Организовать обмен сообщениями между двумя компьютерами, определив IP-адрес из программы winipcfg;
4. Написать программу обмена между двумя компьютерами массивами чисел, представдленными в виде матрицы (таблицы N x N)
3 Теоретическая часть
Браузеры автоматически формируют графическое отображение Web-страниц, посланных сервером. Для стандартного Web-сайта этого вполне достаточно, но когда нужно строить клиент-серверное взаимодействие, основанное на передаче/приёме данных, которые не являются HTML-документами, или нужно создавать решения, где не используются браузеры и клиентская программа должна сама формировать представления информации, то в этих случаях прибегают к сокетам.
Сокеты - это объекты, которые включают в себя все необходимые средства для обмена данными в сетях Internet/Intranet. Эти объекты создают соединения и посылают/принимают данные, что позволяет программисту организовывать взаимодействие между различными программными компонентами также легко, как, например, чтение и запись в файл. При работе в сети различают два типа сокетов: клиентский и серверный.
Клиентский сокет предназначен для установления связи с сервером, точнее, с серверным сокетом. Нахождение нужного сервера осуществляется в сети по его имени, либо по IP-адресу. Объектам клиент-сокет и сервер-сокет в среде программирования Делфи соответствуют классы TClientSocket и TServerSocket соответственно.
Чтобы соединиться с сервером, достаточно указать его имя или IP-адрес, его порт, на котором расположена интересуемая служба, а после того, активировать сокет. При идентификации сервера программисту следует учитывать следующее:
- в одноранговых сетях, использующих протоколы NetBEUI (производство Microsoft) или IPX/SPX (технология Novell), в которых компьютеры не имеют своих IP-адресов, для установки имени компьютера используется поле host вместо поля address;
- в IP-сетях желательно указывать IP-адрес, т.к. при указании доменного имени сокетные компоненты всё равно запрашивают у DNS IP-адрес, что требует определённого времени.
Серверный сокет от клиентской реализации отличается тем, что способен работаь с несколькими клиентами одновременно. На базе серверного сокета можно создавать программы, позволяющие внедрять собственные протоколы верхнего уровня, т.е. реализовывать различные схемы обмена данными.
4 Практическая часть лабораторной работы
4.1 Создание программы для обмена сообщениями
Код программы (Delphi):
o procedure TForm1.FormCreate(Sender: TObject);
o begin
o PortEdit.Text:='777';
o HostEdit.Text:='127.0.0.1';
o NikEdit.Clear;
o TextEdit.Clear;
o ChatMemo.Lines.Clear;
o end;
o procedure TForm1.ServerBtnClick(Sender: TObject);
o begin
o If ServerBtn.Tag=0 then
o Begin
o ClientBtn.Enabled:=False;
o HostEdit.Enabled:=False;
o PortEdit.Enabled:=False;
o ServerSocket1.Port:=StrToInt(PortEdit.Text);
o ServerSocket1.Active:=True;
o ChatMemo.Lines.Add('Bot: Ãî â Äîòó, ÿ ñîçäàë!');
o ServerBtn.Tag:=1;
o ServerBtn.Caption:='Çàêðûòü';
o end
o else
o Begin
o ClientBtn.Enabled:=True;
o HostEdit.Enabled:=True;
o PortEdit.Enabled:=True;
o ServerSocket1.Active:=False;
o ChatMemo.Lines.Add('Bot: Ñåðâåð çàêðûò. Èäè ñïàòü, øêîëüíèê');
o ServerBtn.Tag:=0;
o ServerBtn.Caption:='Ñîçäàòü';
o end;
o end;
o procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
o Socket: TCustomWinSocket);
o begin
o ChatMemo.Lines.Add('Bot: Êëèåíò íà ïðîâîäå');
o end;
o procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
o Socket: TCustomWinSocket);
o begin
o ChatMemo.Lines.Add('Bot: Êëèåíò ïîëîæèë òðóáêó');
o end;
o procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
o Socket: TCustomWinSocket);
o begin
o ChatMemo.Lines.Add(Socket.ReceiveText());
o end;
o procedure TForm1.SendBtnClick(Sender: TObject);
o begin
o If ServerSocket1.Active=True then
o ServerSocket1.Socket.Connections[0].SendText(' '+NikEdit.Text+': '+TextEdit.Text)
o else
o ClientSocket1.Socket.SendText(' '+NikEdit.Text+': '+TextEdit.Text);
o ChatMemo.Lines.Add(''+NikEdit.Text+': '+TextEdit.Text);
o end;
o procedure TForm1.ClientBtnClick(Sender: TObject);
o begin
o If ClientBtn.Tag=0 then
o Begin
o ServerBtn.Enabled:=False;
o HostEdit.Enabled:=False;
o PortEdit.Enabled:=False;
o ClientSocket1.Port:=StrToInt(PortEdit.Text);
o ClientSocket1.Host:=HostEdit.Text;
o ClientSocket1.Address:=HostEdit.Text;
o ClientSocket1.Active:=True;
o ClientBtn.Tag:=1;
o ClientBtn.Caption:='Îòêëþ÷èòüñÿ';
o end
o else
o Begin
o ServerBtn.Enabled:=True;
o HostEdit.Enabled:=True;
o PortEdit.Enabled:=True;
o ClientSocket1.Active:=False;
o ChatMemo.Lines.Add('Bot: Áàçàð çàêðûò');
o ClientBtn.Tag:=0;
o ClientBtn.Caption:='Ïîäêëþ÷èòüñÿ';
o end;
o end;
o procedure TForm1.ClientSocket1Read(Sender: TObject;
o Socket: TCustomWinSocket);
o begin
o ChatMemo.Lines.Add(Socket.ReceiveText());
o end;
o procedure TForm1.ClientSocket1Connect(Sender: TObject;
o Socket: TCustomWinSocket);
o begin
o ChatMemo.Lines.Add('Bot: Òû ïîäêëþ÷èëñÿ');
o end;
o procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
o Socket: TCustomWinSocket);
o begin
o ChatMemo.Lines.Add('Bot: ÒÛ ÍÅ ÏÎÂÅÐÈØÜ, íî òû îòêëþ÷èëñÿ');
o end;
o end.
Скриншот работы программы:
Рисунок 1 - Передача сообщений в обе стороны
4.2 Создание программы для передачи массивов
Код программы:
* const
* n=5;
* var
* Form1: TForm1;
* i,j:integer;
* a:array [0..n,0..n] of integer;
* Buf:array [0..24] of string;
* * implementation
* * {$R *.dfm}
* * * procedure TForm1.FormCreate(Sender: TObject);
* begin
* PortEdit.Text:='777';
* HostEdit.Text:='127.0.0.1';
* NikEdit.Clear;
* TextEdit.Clear;
* end;
* * procedure TForm1.ServerBtnClick(Sender: TObject);
* begin
* If ServerBtn.Tag=0 then
* Begin
* ClientBtn.Enabled:=False;
* HostEdit.Enabled:=False;
* PortEdit.Enabled:=False;
* ServerSocket1.Port:=StrToInt(PortEdit.Text);
* ServerSocket1.Active:=True;
* ServerBtn.Tag:=1;
* ServerBtn.Caption:='Çàêðûòü';
* end
* else
* Begin
* ClientBtn.Enabled:=True;
* HostEdit.Enabled:=True;
* PortEdit.Enabled:=True;
* ServerSocket1.Active:=False;
* ServerBtn.Tag:=0;
* ServerBtn.Caption:='Ñîçäàòü';
* end;
* end;
* * procedure TForm1.SendBtnClick(Sender: TObject);
* begin
* If ServerSocket1.Active=True then
* ServerSocket1.Socket.Connections[0].SendText(' '+NikEdit.Text+': '+TextEdit.Text)
* else
* ClientSocket1.Socket.SendText(' '+NikEdit.Text+': '+TextEdit.Text);
* end;
* * procedure TForm1.ClientBtnClick(Sender: TObject);
* begin
* If ClientBtn.Tag=0 then
* Begin
* ServerBtn.Enabled:=False;
* HostEdit.Enabled:=False;
* PortEdit.Enabled:=False;
* ClientSocket1.Port:=StrToInt(PortEdit.Text);
* ClientSocket1.Host:=HostEdit.Text;
* ClientSocket1.Address:=HostEdit.Text;
* ClientSocket1.Active:=True;
* ClientBtn.Tag:=1;
* ClientBtn.Caption:='Îòêëþ÷èòüñÿ';
* end
* else
* Begin
* ServerBtn.Enabled:=True;
* HostEdit.Enabled:=True;
* PortEdit.Enabled:=True;
* ClientSocket1.Active:=False;
* ClientBtn.Tag:=0;
* ClientBtn.Caption:='Ïîäêëþ÷èòüñÿ';
* end;
* end;
* * procedure TForm1.Button2Click(Sender: TObject);
* begin
* for j:=0 to n do
* begin
* for i:=0 to n do
* begin
* a[i,j]:=random(15);
* StringGrid1.Cells[j,i]:=IntToStr(a[i,j]);
* end;
* end;
* end;
* * procedure TForm1.Button1Click(Sender: TObject);
* begin
* Buf[0]:=StringGrid1.Cells[0,0];
* Buf[1]:=StringGrid1.Cells[0,1];
* Buf[2]:=StringGrid1.Cells[0,2];
* Buf[3]:=StringGrid1.Cells[0,3];
* Buf[4]:=StringGrid1.Cells[0,4];
* Buf[5]:=StringGrid1.Cells[1,0];
* Buf[6]:=StringGrid1.Cells[1,1];
* Buf[7]:=StringGrid1.Cells[1,2];
* Buf[8]:=StringGrid1.Cells[1,3];
* Buf[9]:=StringGrid1.Cells[1,4];
* Buf[10]:=StringGrid1.Cells[2,0];
* Buf[11]:=StringGrid1.Cells[2,1];
* Buf[12]:=StringGrid1.Cells[2,2];
* Buf[13]:=StringGrid1.Cells[2,3];
* Buf[14]:=StringGrid1.Cells[2,4];
* Buf[15]:=StringGrid1.Cells[3,0];
* Buf[16]:=StringGrid1.Cells[3,1];
* Buf[17]:=StringGrid1.Cells[3,2];
* Buf[18]:=StringGrid1.Cells[3,3];
* Buf[19]:=StringGrid1.Cells[3,4];
* Buf[20]:=StringGrid1.Cells[4,0];
* Buf[21]:=StringGrid1.Cells[4,1];
* Buf[22]:=StringGrid1.Cells[4,2];
* Buf[23]:=StringGrid1.Cells[4,3];
* Buf[24]:=StringGrid1.Cells[4,4];
* If ServerSocket1.Active=True then
* ServerSocket1.Socket.Connections[0].SendBuf(Buf,25)
* else
* ClientSocket1.Socket.SendBuf(Buf,25);
* StringGrid2.Cells[0,0]:=Buf[0];
* StringGrid2.Cells[0,1]:=Buf[1];
* StringGrid2.Cells[0,2]:=Buf[2];
* StringGrid2.Cells[0,3]:=Buf[3];
* StringGrid2.Cells[0,4]:=Buf[4];
* StringGrid2.Cells[1,0]:=Buf[5];
* StringGrid2.Cells[1,1]:=Buf[6];
* StringGrid2.Cells[1,2]:=Buf[7];
* StringGrid2.Cells[1,3]:=Buf[8];
* StringGrid2.Cells[1,4]:=Buf[9];
* StringGrid2.Cells[2,0]:=Buf[10];
* StringGrid2.Cells[2,1]:=Buf[11];
* StringGrid2.Cells[2,2]:=Buf[12];
* StringGrid2.Cells[2,3]:=Buf[13];
* StringGrid2.Cells[2,4]:=Buf[14];
* StringGrid2.Cells[3,0]:=Buf[15];
* StringGrid2.Cells[3,1]:=Buf[16];
* StringGrid2.Cells[3,2]:=Buf[17];
* StringGrid2.Cells[3,3]:=Buf[18];
* StringGrid2.Cells[3,4]:=Buf[19];
* StringGrid2.Cells[4,0]:=Buf[20];
* StringGrid2.Cells[4,1]:=Buf[21];
* StringGrid2.Cells[4,2]:=Buf[22];
* StringGrid2.Cells[4,3]:=Buf[23];
* StringGrid2.Cells[4,4]:=Buf[24];
* * end;
* * end.
Скриншот работы программы:
Рисунок 2 - Отправление массива
Вывод
В ходе выполнения этой лабораторной работы я понял как создавать программу в среде Delphi для обмена сообщениями на основе компонентов TClientSocket и TServerSocket, узнал, какие свойства есть у этих компонентов.
Список использованных источников
1 СТО 02069024.101-2010. Работы студенческие. Общие требования и правила оформления. - Взамен СТП 101-00; введен 2010-10-01. .- М. : ОГУ, 2011. - 92 с.
Документ
Категория
Рефераты
Просмотров
30
Размер файла
286 Кб
Теги
лаба
1/--страниц
Пожаловаться на содержимое документа