Файл: Технология «клиент-сервер».pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 19.06.2023

Просмотров: 47

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

conn, addr = serv_socket.accept()

В объекте conn у нас сохраняется сокет, с помощью которого мы в дальнейшем сможем взаимодействовать с клиентом, в массиве addr – IP-адрес подключившегося клиента. Выведем в консоль информацию о подключении клиента

print('connected: ', addr)

Уже в данный момент клиент может подключиться к серверу, однако никак не сможет с ним взаимодействовать. Реализуем цикл, чтения порции данных от клиента. Читать данные от клиента мы будем порциями по 100 байт, именно этот параметр указывается методу recv(). Все входящие данные мы так же будем выводить в консоль, и так же отправлять их назад клиенту, предварительно переведя все символы в нижний регистр.

while True:

data = conn.recv(100)

if not data:

break

print('recieved data: ', data)

conn.send(data.lower())

По окончанию обмена закрываем соединение методом close()

conn.close()

Реализация простейшего серверного приложения готова.

Глава 2.2. Реализация приложения-клиента

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

import socket

client_socket = socket.socket()

server = '127.0.0.1'

port = 3737

client_socket.connect((server, port))

Для демонстрации передачи данных, клиент будет отсылать серверу строку «HELLO!!!» Сервер должен будет получить данную строку, привести её к нижнему регистру и отправить клиенту. После этого работа клиента и сервера будет завершена, а соединения закрыты..

client_socket.send('HELLO!!!'.encode())

data = client_socket.recv(100)

print(data)

client_socket.close()

Глава 2.3. Проверка работоспособности

Запустим сервер. Получим в консоль следующий вывод:

Рисунок 4. Окно запущенного серверного приложения

Сервер ожидает подключения. Запускаем клиент. Вывод сервера изменился, он сообщил о установлении соединения, и получении данных: строки «HELLO!!!» передал строку в нижнем регистре и завершил работу

Рисунок 5. Вывод информации о подключенном клиенте, строки полученной от клиента и успешном завершении работы


Клиент тем временем сообщил о получении строки «hello!!!» и также завершил работу

Рисунок 6. Вывод измененного сообщения полученного клиентом от сервера, а так же сообщение о успешном завершении работы

Вывод по главе 2

Мной были реализованы простые приложения сервер и клиент, продемонстрировавшие обмен сообщениями. В приложении 1 и 2 предоставлен полный листинг программ.

Заключение

В ходе выполнения курсовой работы, мной были пополнены и закреплены знания о технологии «клиент-сервер», особое внимание было уделено важному на мой взгляд межсетевому взаимодействию, его принципам и организации. Рассмотрен вопрос распределения функционала и ролей между сервером и клиентом, преимущества того или иного подхода, возможности и преимущества различных архитектур при масштабировании системы. Итогом работы стала самостоятельная разработка клиент-серверного приложения, продемонстрирована его работа.

Список литературы 

Мною были использованы следующие книги:

Архитектура корпоративных программных приложений.: Пер. с англ. – М.: Издательский дом "Вильямс", 2006.

В этой книге подробно рассматривается вопрос корпоративных программных решений. Автор на основании своего опыта, а так же на множество исследований и руководств представляет основные способы построения архитектуры приложений, особенности и способы взаимодействия с базами данных.

Компьютерные сети. Принципы, технологии, протоколы: учебник для вузов. 5-е изд./В. Олифер Н. Олифер – СПб.: Питер, 2016.

Данная книга является крупным справочником, рассматривающим широкий спектр технологий и протоколов. Данный справочник рекомендован Министерством образования и науки Российской Федерации в качестве учебного пособия для студентов высших учебных заведений, обучающихся по направлению 552800 «Информатика и вычислительная техника» и по специальностям 220100 «Вычислительные машины, комплексы, системы и сети», 220200 «Автоматизированные системы обработки информации и управления» и 220400 «Программное обеспечение вычислительной техники и автоматизированных систем»

Основы организации сетей Cisco, том 1, испр. изд. : Пер. с англ.
А.А. Голубченко — М. : Издательский дом "Вильямc", 2004.

В книге подробно рассматриваются принципы организации сети на примере оборудования компании Cisco, имеющей длительный опыт разработки оборудования сетей и внесшей неоценимый вклад в развите отрасли и интернета в целом.


Распределенные системы. Принципы и парадигмы/Э. Таненбаум, М. ван Стеен. – СПб.: Питер, 2003.

Одна из книг известного в кругах информационных технологий преподавателя MIT (Масачусетского Технологического Института) а также разработчика операционной системы MiniX. Огромный опыт и глубочайшие познания этого человека не оставляли вариантов. Данная книга являлась основной при подготовке данной курсовой работы.

Список литературы

  1. Архитектура корпоративных программных приложений.: Пер. с англ. – М.: Издательский дом "Вильямс", 2006. – 544 с.
  2. Компьютерные сети. Принципы, технологии, протоколы: учебник для вузов. 5-е изд./В. Олифер Н. Олифер – СПб.: Питер, 2016. – 992 с.
  3. Основы организации сетей Cisco, том 1, испр. изд. : Пер. с англ.
    А.А. Голубченко — М. : Издательский дом "Вильямc", 2004. – 512 с
  4. Распределенные системы. Принципы и парадигмы/Э. Таненбаум, М. ван Стеен. – СПб.: Питер, 2003. – 877 с.
  5. https://tools.ietf.org/html/rfc5
  6. https://tools.ietf.org/html/rfc1644
  7. https://tools.ietf.org/html/rfc6247
  8. http://phrack.org/issues/53/6.html
  9. https://blog.chromium.org/2013/06/experimenting-with-quic.html
  10. https://netmarketshare.com/browser-market-share.aspx
  11. https://opensource.googleblog.com/2017/01/grumpy-go-running-python.html
  12. https://code.fb.com/production-engineering/python-in-production-engineering/
  13. https://instagram-engineering.com/what-powers-instagram-hundreds-of-instances-dozens-of-technologies-adf2e22da2ad
  14. https://www.python.org/dev/peps/pep-0020/
  15. https://www.python.org

Приложения

Приложение 1. Листинг программы-сервера

import socket

serv_socket = socket.socket()

host = ''

port = 3737

serv_socket.bind((host, port))

serv_socket.listen(1)

conn, addr = serv_socket.accept()

print('connected: ', addr)

while True:

data = conn.recv(100)

if not data:

break

print('recieved data: ', data)

conn.send(data.lower())

conn.close()

Приложение 2. Листинг программы-клиента

import socket

client_socket = socket.socket()

server = '127.0.0.1'

port = 3737

client_socket.connect((server, port))

client_socket.send('HELLO!!!'.encode())

data = client_socket.recv(100)

print(data)

client_socket.close()

  1. Распределенные системы. Принципы и парадигмы/Э. Таненбаум, М. ван Стеен. – СПб.: Питер, 2003. – С 67

  2. https://tools.ietf.org/html/rfc5

  3. Архитектура корпоративных программных приложений.: Пер. с англ. – М.: Издательский дом "Вильямс", 2006. – C 43

  4. Архитектура корпоративных программных приложений.: Пер. с англ. – М.: Издательский дом "Вильямс", 2006. – C 43

  5. Архитектура корпоративных программных приложений.: Пер. с англ. – М.: Издательский дом "Вильямс", 2006. – C 44

  6. Распределенные системы. Принципы и парадигмы/Э. Таненбаум, М. ван Стеен. – СПб.: Питер, 2003. – С 72

  7. Распределенные системы. Принципы и парадигмы/Э. Таненбаум, М. ван Стеен. – СПб.: Питер, 2003. – С 73

  8. Распределенные системы. Принципы и парадигмы/Э. Таненбаум, М. ван Стеен. – СПб.: Питер, 2003. – С 74

  9. Распределенные системы. Принципы и парадигмы/Э. Таненбаум, М. ван Стеен. – СПб.: Питер, 2003. – С 76

  10. Распределенные системы. Принципы и парадигмы/Э. Таненбаум, М. ван Стеен. – СПб.: Питер, 2003. – С 77

  11. Распределенные системы. Принципы и парадигмы/Э. Таненбаум, М. ван Стеен. – СПб.: Питер, 2003. – С 69

  12. Компьютерные сети. Принципы, технологии, протоколы: учебник для вузов. 5-е изд./В. Олифер
    Н. Олифер – СПб.: Питер, 2016. – С 492

  13. Компьютерные сети. Принципы, технологии, протоколы: учебник для вузов. 5-е изд./В. Олифер
    Н. Олифер – СПб.: Питер, 2016. – С 493

  14. Основы организации сетей Cisco, том 1, испр. изд. : Пер. с англ.
    А.А. Голубченко — М. : Издательский дом "Вильямc", 2004. – стр 173

  15. Компьютерные сети. Принципы, технологии, протоколы: учебник для вузов. 5-е изд./В. Олифер Н. Олифер – СПб.: Питер, 2016. – стр 501

  16. https://tools.ietf.org/html/rfc1644

  17. http://phrack.org/issues/53/6.html

  18. https://tools.ietf.org/html/rfc6247

  19. https://blog.chromium.org/2013/06/experimenting-with-quic.html

  20. https://netmarketshare.com/browser-market-share.aspx (дата обращения: 24.12.2018)

  21. https://opensource.googleblog.com/2017/01/grumpy-go-running-python.html

  22. https://code.fb.com/production-engineering/python-in-production-engineering/

  23. https://instagram-engineering.com/what-powers-instagram-hundreds-of-instances-dozens-of-technologies-adf2e22da2ad

  24. https://www.python.org/dev/peps/pep-0020/

  25. https://www.python.org/downloads/ (дата обращения 24.12.2018)