- •Часть 1
- •Устройство вычислительной системы на основе ibm pc-совместимого компьютера
- •Порядок выполнения работы.
- •Порядок выполнения.
- •1.3.Заполните таблицу:
- •Получение навыков в сборке и настройке пк
- •Порядок выполнения.
- •Заполните таблицу.
- •Изучить компоненты, входящие в состав материнской платы.
- •3.1. Изучить компоненты, входящие в состав материнской платы.
- •Теоретическое введение
- •Установление соединения
- •Перевод сокета в режим пассивного ожидания
- •Блокирование выполнения программы до тех пор, пока не поступит запрос на установление соединения
- •Передача данных
- •Получение данных по сети
- •Задание к работе
- •Создание клиентского приложения
- •Дополнительные задания
- •Контрольные вопросы
- •2.Исследование протоколов ftp
- •3.Исследование протоколов Telnet, smtp, pop, imap
- •Пример электронного письма
- •Дополнительная литература
- •Оглавление
- •Горбунов Андрей Михайлович вычислительные системы, сети и телекоммуникации сборник лабораторных работ
- •Часть 1
Создание клиентского приложения
Создайте клиентское приложение, имеющее вид, показанный на рис.3.
Клиентское приложение должно выполнять следующие действия:
Инициализировать интерфейс сокетов с помощью функции WSAStartup.
Создавать сокет с помощью функции socket.
Устанавливать соединение с сервером с помощью функции connect.
Передавать данные на сервер с помощью функции send.
Получать ответ от сервера в режиме эхо с помощью функции recv.
Выводить эхо-ответ на экран.
Закрывать сокет с помощью функции CloseSocket.
Прекратить работу с интерфейсом сокетов с помощью функции WSACleanup.
Для выполнения перечисленных функций выполните следующее:
Создайте проект (New Application). Назовите созданный проект каким-либо именем, например – Client.
На созданную форму перенесите две командные кнопки:
Button1 - «Переслать сообщение»;
Button2 - «Выход из программы».
Для события OnClick командной кнопки «Переслать сообщение» запишите следующий программный код:
procedure TForm1.Button1Click(Sender: TObject);
VAR
s:TSocket; {Сокет}
recipient,sender_socket:TSockAddr; {адреса сокета получателя и
сокета отправителя}
ret:Integer; {результат работы функций}
wsd:WSADATA; {Структура WSADATA, требуется для инициализации
интерфейса сокетов}
bufr:Array[0..90] of char; {буфер для передачи данных на сервер}
msgstring:Array[0..90] of char {буфер для вывода сообщения на экран};
bufs:Array [1..80] of char; {буфер для получения ответа от сервера}
size_socket:Integer; {размер структуры TSockAddr}
begin
// Инициализация интерфейса сокетов
If WSAStartup(MAKEWORD(2,2),wsd)<>0
then ShowMessageFmt('Ошибка %d при инициализации интерфеса сокетов',
[WSAGetLastError])
else
begin
// Создание сокета клиента
s:=socket(AF_INET,SOCK_STREAM,0);
If s=INVALID_SOCKET
then
ShowMessageFmt('Ошибка %d при создании сокета',[WSAGetLastError])
else
begin
// Формирование адреса сервера (получателя сообщения)
ZeroMemory(@recipient,sizeof(recipient));
recipient.sin_family:=AF_INET;
recipient.sin_port:=htons(2000);
recipient.sin_addr.S_addr:=inet_addr('192.168.0.2');
// Установление соединения
ret:=connect(s,recipient,sizeof(recipient));
If ret=SOCKET_ERROR then
ShowMessageFmt('Ошибка %d при установлении соединения ',
[WSAGetLastError])
else
begin
// Передаваемое сообщение
strcopy(@bufs,'Это мой тест');
// Передача сообщения серверу
ret:=send(s,bufs,sizeof(bufs),0);
If ret=SOCKET_ERROR then
ShowMessageFmt('Ошибка %d при передаче данных ',
[WSAGetLastError]);
ZeroMemory(@bufr,sizeof(bufr));
size_socket:=Sizeof(sender_socket);
// Получение ответа от сервера
ret:=recv(s,bufr,sizeof(bufr),0);
If ret=SOCKET_ERROR then
ShowMessageFmt('Ошибка %d при получении ответа ',
[WSAGetLastError])
else
begin
// Формирование сообщения msgstring для вывода на экран
StrCopy(@msgstring,'Получен ответ: ');
StrCat(@msgstring,@bufr);
StrCat(@msgstring,' от ');
StrCat(@msgstring,inet_ntoa(recipient.sin_addr));
ShowMessage(msgstring);
end;
end;
// закрытие сокета
CloseSocket(s);
end;
WSACleanup;
end;
end;
Откомпилируйте созданное приложение.
Проверьте совместную работу приложения-сервера и приложения-клиента.
