7. Алгоритм программы сокеты (1060546)
Текст из файла
-
Разработка алгоритма программы для реализации канального протокола.
Реализация разработанного протокола может быть осуществлена на таких языках программирования, как Borland Delphi, C, Basic, LabView и т.д. В качестве примера для организации обмена данными для протокола TCP/IP мы использовали стандартные компоненты Borland Delphi 6 ClientSocket & ServerSocket.
Эти два компонента осуществляют связь «клиент-сервер», в нашем случае сервером выступает ПК, клиентом – периферийное устройство (УЗГ).
Итак, приведем краткий обзор.
Обзор по ClientSocket
Схема работы сокетного клиента:
Определение свойств Host и Port - чтобы успешно установить соединение, нужно присвоить свойствам Host и Port компонента TClientSocket требуемые значения. Host - это хост-имя либо IP-адрес ПК, с которым надо соединиться.
Port - номер порта (от 1 до 65535) для установления соединения. Обычно номера портов берутся, начиная с 1001 - т.к. номера меньше 1000 могут быть заняты системными службами (например, POP -110).
Открытие сокета - после того, как назначили свойствам Host и Port соответствующие значения, можно приступить непосредственно к открытию сокета (сокет здесь рассматривается как очередь, в которой содержатся символы, передающиеся от одного компьютера к другому). Для этого можно вызвать метод Open компонента TClientSocket, либо присвоить свойству Active значение True. Здесь полезно ставить обработчик исключительной ситуации на тот случай, если соединиться не удалось.
Посылка/прием данных - это, собственно и есть то, для чего открывалось сокетное соединение.
Закрытие сокета - после всех выполненных операций необходимо закрыть сокет с помощью метода Close компонента TClientSocket (либо присвоить свойству Active значение False).
Описание свойств и методов компонента TClientSocket
| Свойства | Методы | События |
| Active – показывает, открыт сокет или нет. True – открыт, False – закрыт. Host – строка (Тип: string), указывающая на хост-имя ПК, к которому подключаемся. Address - строка (Тип: string), указывающая на IP-адрес ПК, к которому подключаемся. В отличие от Host, здесь содержатся лишь IP. Port - номер порта, к которому подключаемся. Рекомендуются значения от 1 до 65535. Service - строка, определяющая службу (ftp, http, pop, и т.д.),к порту которой произойдет подключение. Это своеобразный справочник соответствия номеров портов различным стандартным протоколам. Тип: string; ClientType – тип соединения. ctNonBlocking - aсинхронная передача данных, т.е. посылать и принимать данные по сокету можно с помощью OnRead, OnWrite. ctBlocking – синхронная (одновременная) передача данных. События OnRead, OnWrite не работают. Этот тип соединения полезен для организации обмена данными с помощью потоков (т.е. работа с сокетом как с файлом). | Open – открытие сокета (аналогично присвоению значения True свойству Active); Close – закрытие сокета (аналогично присвоению значения False свойству Active). | OnConnect – возникает при установлении соединения. Т.е. в обработчике этого события уже можно начинать авторизацию или прием/передачу данных. OnConnecting – возникает при установлении соединения. Отличие от предыдущего события в том, что соединение еще не установлено. Обычно такие промежуточные события используются для обновления статуса; OnDisconnect – возникает при закрытии сокета. Причем, закрытия как со стороны ПУ, так и с ПК. OnError – возникает при ошибке в работе сокета. OnRead - возникает, когда ПК послал какие-либо данные. OnWrite - возникает, когда разрешена запись данных в сокет. |
Обзор по ServerSocket
Схема работы сокетного сервера:
Определение свойств Port и ServerType - чтобы к серверу могли нормально подключаться клиенты, нужно, чтобы порт, используемый сервером, точно совпадал с портом, используемым клиентом (и наоборот). Свойство ServerType определяет тип подключения;
Открытие сокета - открытие сокета и указанного порта. Здесь выполняется автоматическое начало ожидания подсоединения клиентов (Listen);
Подключение клиента и обмен данными с ним - здесь подключается клиент и идет обмен данными с ним.
Отключение клиента - Здесь клиент отключается и закрывается его сокетное соединение с сервером;
Закрытие сервера и сокета - По команде администратора сервер завершает свою работу, закрывая все открытые сокетные каналы и прекращая ожидание подключений клиентов.
Краткое описание компонента TServerSocket
| Свойства | Методы | События |
| Socket - класс TServerWinSocket, через который Вы имеете доступ к открытым сокетным каналам. Далее мы рассмотрим это свойство более подробно, т.к. оно, собственно и есть одно из главных. Тип: TServerWinSocket; ServerType - тип сервера. Может принимать одно из двух значений: stNonBlocking - синхронная работа с клиентскими сокетами. При таком типе сервера Вы можете работать с клиентами через события OnClientRead и OnClientWrite. stThreadBlocking - асинхронный тип. Active - показатель того, активен в данных момент сервер, или нет. Т.е., фактически, значение True указывает на то, что сервер работает и готов к приему клиентов, а False - сервер выключен. Тип: Boolean; Port - номер порта для установления соединений с клиентами. Порт у сервера и у клиентов должны быть одинаковыми. Рекомендуются значения от 1025 до 65535, т.к. от 1 до 1024 - могут быть заняты системой. Тип: Integer; Service - строка, определяющая службу (ftp, http, pop, и т.д.), порт которой будет использован. Это своеобразный справочник соответствия номеров портов различным стандартным протоколам. Тип: string; | Open - запускает сервер. Эта команда идентична присвоению значения True свойству Active; Close - останавливает сервер. Эта команда идентична присвоению значения False свойству Active. | OnClientConnect - возникает, когда клиент установил сокетное соединение и ждет ответа сервера (OnAccept); OnClientDisconnect - возникает, когда клиент отсоединился от сокетного канала; OnClientError - возникает, когда текущая операция завершилась неудачно, т.е. произошла ошибка; OnClientRead - возникает, когда клиент передал серверу какие-либо данные. Доступ к этим данным можно получить через передаваемый параметр Socket: TCustomWinSocket; OnClientWrite - возникает, когда сервер может отправлять данные клиенту по сокету; OnGetSocket - в обработчике этого события Вы можете отредактировать параметр ClientSocket; OnAccept - возникает, когда сервер принимает клиента или отказывает ему в соединении; OnListen - возникает, когда сервер переходит в режим ожидания подсоединения клиентов. |
Посылка и прием данных через сокеты
procedure TForm1.Button1Click(Sender: TObject);
begin
{Определяем порт и запускаем сервер}
ServerSocket1.Port:= 1025;
{Метод Insert вставляет строку в массив в указанную позицию}
Memo2.Lines.Insert(0,'Server starting');
ServerSocket1.Open;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
{Останавливаем сервер}
ServerSocket1.Active := False;
Memo2.Lines.Insert(0,'Server stopped');
end;
procedure TForm1.ServerSocket1Listen(Sender: TObject;
Socket: TCustomWinSocket);
begin
{Сервер проверяет сокет на наличие клиентов}
Memo2.Lines.Insert(0,'Listening on port '+IntToStr(ServerSocket1.Port));
end;
procedure TForm1.ServerSocket1Accept(Sender: TObject;
Socket: TCustomWinSocket);
begin
{Сервер принимает клиента}
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.















