##master-page:VMSHClassTemplate ##master-date:Unknown-Date #format wiki #language ru = Ведение в сетевое программирование = * Основы TCP/IP * Пятиуровневый стек * Клиент-сервер и Сокеты * Асинхронный обмен данными и модуль [[pydoc:socket]] || '''Клиент'''||'''Сервер''' || || ||`bind()` || || ||`listen()` || || `connect()` || `accept()` || |||| `recv()`, `send()`,`sendall()` || |||| '''…''' || |||| `close()` || * {*} Асинхронный обмен данными с помощью обратных вызовов: модуль [[pydoc:asyncore]] * Понятие «протокола» * {*} модуль [[pydoc:asynchat]] * Упрощённый высокоуровневый сетевой модуль [[pydoc:socketserver]] === Домашнее задание === 1. {i} Прочитать [[LecturesCMC/LinuxNetwork2013/Conspects/01|конспект вводной лекции по TCP/IP]]. Это занимательное чтение, спасибо автору конспекта! 1. {i} Прочитать [[http://habrahabr.ru/post/149077/|простую статью на Хабре]] и документацию по [[pydoc:socket]] и [[pydoc:socketserver]] 1. Воспроизвести примеры из документации 1. Написать программу-чат (простой аналог [[RW:Netcat]], один слушает порт, другой подключается, некоторое время пересылают друг другу строки сообщений, затем любой закрывает соединение). В зависимости от того, указан адрес или нет, программа запускается как клиент (с подключением на этот адрес) или как сервер (с `bind()` на пустой адрес) * [[attachment:2014-03-21-netcat.py]] 1. Разработать протокол и написать сервер, решающий квадратные уравнения (пользователь подключается — хоть тем же `netcat`, вводит параметры квадратного уравнения, получает ответ) * хоть как-то, чтобы работало * + с учётом 6 различных вариантов ответа (2 ответа, один, решений нет, уравнение линейное, уравнение вырожденное + решений нет, уравнение вырожденное + решение любое) * + с защитой от неправильного ввода (7-й вариант ответа) * + написать клиентскую программу, разбирающую ответ * [[attachment:2014-03-21-netsq.py]] ==== Условные обозначения ==== . {o} — тема по Linux . ­— тема повышенной сложности . {i} — теоретическое задание . {*} — тема для самостоятельного изучения ---- CategoryClass CategoryVmsh