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

Лабораторная Socket

.doc
Скачиваний:
37
Добавлен:
13.03.2016
Размер:
359.42 Кб
Скачать

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

Сетевое программирование с использованием сокетов

Цель работы

Получить навыки создания сетевых приложений на основе технологии Socket

Краткие теоретические сведения

Сокетом (от англ. Socket – гнездо, розетка) называется специальный объект, создаваемый для отправки и получения данных через сеть. Чтобы 2 программы могли общаться друг с другом через сеть, каждая из них должна создать сокет. Каждый сокет обладает двумя основными характеристиками: протоколом и адресом, к которым он привязан. Протокол задается при создании сокета и не может быть изменен впоследствии. Адрес сокета задается позже, но обязательно до того, как через сокет пойдут данные.

В среде Delphi функции механизма обмена данными на основе сокетов воплощены в невизуальных компонентах TclientSocket и TserverSocket, расположенных на панели Internet. Начиная с версии Delphi7 и выше, компоненты TClientSocket и TServerSocket изначально отсутствуют на вкладке Internet, подключить библиотеку сокетов можно следующим образом:

Component -> Install Packages -> Add и выбираем файл dclsockets70.bpl

Пример

На основании компонентов TclientSocket и TserverSocket создадим многопользовательское приложение для обмена сообщениями, состоящее из программы сервера и программы клиента. Клиентские программы могут быть запущены на любом компьютере, в том числе и на самом сервере. Для компьютера, играющего роль сервера должен быть известен IP адрес.

Разработка сервера

Поместим программу в папку Server.

Создадим форму, приведенную на рисунке.

Для компонента ServerSocket укажем следующие свойства:

Port=1025 (любой свободный, обычно больше 1024)

Active=False.

Для события OnClientRead напишем следующий код:

Var S:String;I:Integer;

Begin

S:=IntToStr(Socket.SocketHandle)+' > '+Socket.ReceiveText;

ListBox1.Items.Add(S);

For I:=0 To ServerSocket1.Socket.ActiveConnections-1 Do Begin

If ServerSocket1.Socket.Connections[i].SocketHandle<> Socket.SocketHandle Then

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

End;

End;

Для процедуры создания формы:

begin

ServerSocket1.Active:=True;

end;

Для кнопки «Выход»

begin

ServerSocket1.Active:=False;Close;

end;

Для кнопки «Очистить»

begin

ListBox1.Clear;

end;

Скомпилируем программу и перейдем к разработке клиента.

Разработка клиента.

Поместим программу в папку Client

Создадим форму, приведенную на рисунке.

Для компонента ClientSocket укажем следующие свойства:

Port=1025 (любой свободный, обычно больше 1024, совпадает с указанным сервером)

Active=False.

Addres= 127.0.0.1 (в случае, если клиент устанавливается на том же компьютере, что и сервер. Если клиент устанавливается на другом компьютере необходимо указать IP адрес соответствующего компьютера.

Для события OnRead компонента ClientSocket пишем следующий код:

Var S:String;

begin

S:=Socket.ReceiveText;ListBox1.Items.Add(S);

{В случае если в зависимости от пришедшего сообщения необходимо выполнить

какие-либо действия}

If S='48 > Pricol' Then ShowMessage('Прикол');

end;

Для кнопки «Подключиться к серверу»

begin

If Not ClientSocket1.Active Then ClientSocket1.Active:=True;

end;

Для кнопки «Послать сообщение»

begin

ClientSocket1.Socket.SendText(Edit1.Text);

end;

Для кнопки «Выход»

begin

ClientSocket1.Active:=False;Close;

end;

Скомпилируем программу.

Задание к лабораторной работе

  1. Ознакомиться с технологией сетевого взаимодействия приложений посредством технологии Socket. Изучить основные функции интерфейса сокетов.

  2. Написать приложение, реализующее задание своего варианта.

  3. Отладить написанное приложение на локальной машине и проверить его работоспособность в локальной сети

  4. В отчете к лабораторной работе отразить ход выполнения работы, привести текст основных программных функций, ответить на контрольные вопросы.

Варианты заданий

  1. Сетевая игра «камень, ножницы, бумага». Предусмотреть возможность ведения счета по результатам проведенных партий.

  2. Игра в города. Осуществлять автоматическую проверку соответствия сообщений игроков правилам игры.

  3. Статистическая обработка текста. Приложение-сервер подсчитывает частоту появления каждого символа в полученном тексте и посылает эту информацию клиенту.

Контрольные вопросы

  1. Понятие технологии Windows Socket.

  2. Основные этапы работы с сокетами.

  3. Понятие технологии «клиент-сервер»

  4. Блокирующие и неблокирующие сокеты.

  5. Понятие IP-адреса.

  6. Какой адрес используется в случае локального сервера?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]