Ведение в сетевое программирование
- Основы TCP/IP
- Пятиуровневый стек
- Клиент-сервер и Сокеты
Асинхронный обмен данными и модуль socket
Клиент
Сервер
bind()
listen()
connect()
accept()
recv(), send(),sendall()
…
close()
Асинхронный обмен данными с помощью обратных вызовов: модуль asyncore
- Понятие «протокола»
модуль asynchat
Упрощённый высокоуровневый сетевой модуль socketserver
Домашнее задание
Прочитать конспект вводной лекции по TCP/IP. Это занимательное чтение, спасибо автору конспекта!
Прочитать простую статью на Хабре и документацию по socket и socketserver
- Воспроизвести примеры из документации
Написать программу-чат (простой аналог Netcat, один слушает порт, другой подключается, некоторое время пересылают друг другу строки сообщений, затем любой закрывает соединение). В зависимости от того, указан адрес или нет, программа запускается как клиент (с подключением на этот адрес) или как сервер (с bind() на пустой адрес)
Разработать протокол и написать сервер, решающий квадратные уравнения (пользователь подключается — хоть тем же netcat, вводит параметры квадратного уравнения, получает ответ)
- хоть как-то, чтобы работало
- + с учётом 6 различных вариантов ответа (2 ответа, один, решений нет, уравнение линейное, уравнение вырожденное + решений нет, уравнение вырожденное + решение любое)
- + с защитой от неправильного ввода (7-й вариант ответа)
+ написать клиентскую программу, разбирающую ответ
Условные обозначения
— тема по Linux
— тема повышенной сложности
— теоретическое задание
— тема для самостоятельного изучения