Скачать презентацию КУРСОВОЙ ПРОЕКТ ЗАДАНИЕ НА ПЕРВУЮ ЧАСТЬ Скачать презентацию КУРСОВОЙ ПРОЕКТ ЗАДАНИЕ НА ПЕРВУЮ ЧАСТЬ

09 Курсовой проект.pptx

  • Количество слайдов: 14

КУРСОВОЙ ПРОЕКТ КУРСОВОЙ ПРОЕКТ

ЗАДАНИЕ НА ПЕРВУЮ ЧАСТЬ • опишите правила игры и алгоритм проведения игровой ситуации ЗАДАНИЕ НА ПЕРВУЮ ЧАСТЬ • опишите правила игры и алгоритм проведения игровой ситуации "крестики-нолики" (3 x 3) • с использованием библиотек My. Term и Big. Chars, разработайте набор функций: • print. Board (struct board); • set. Board. Pos (struct board, int, enum t. Pos. Sign); • get. Board. Pos (struct board, int, enum t. Pos. Sign *); • edit. Board (struct board *, int *) • Разработайте протокол взаимодействия клиентской и серверной частей приложения при: создании новой игры, подключении игроков к ранее созданной игре, проведении игровой ситуации и завершении её. Заложите возможность диалога игроков в режиме чата (через контролирующий сервер). • Реализуйте простейшую программу-сервер.

ЗАДАНИЕ НА ПЕРВУЮ ЧАСТЬ • опишите правила игры и алгоритм проведения игровой ситуации ЗАДАНИЕ НА ПЕРВУЮ ЧАСТЬ • опишите правила игры и алгоритм проведения игровой ситуации "крестики-нолики" (3 x 3) • с использованием библиотек My. Term и Big. Chars, разработайте набор функций: • print. Board (struct board); • set. Board. Pos (struct board, int, enum t. Pos. Sign); • get. Board. Pos (struct board, int, enum t. Pos. Sign *); • edit. Board (struct board *, int *) • Разработайте протокол взаимодействия клиентской и серверной частей приложения при: создании новой игры, подключении игроков к ранее созданной игре, проведении игровой ситуации и завершении её. Заложите возможность диалога игроков в режиме чата (через контролирующий сервер). • Реализуйте простейшую программу-сервер.

ПРАВИЛА ИГРЫ ПРАВИЛА ИГРЫ

ИНТЕРФЕЙС КЛИЕНТСКОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ • Использует библиотеки из курса «Организация ЭВМ и систем» (3, ИНТЕРФЕЙС КЛИЕНТСКОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ • Использует библиотеки из курса «Организация ЭВМ и систем» (3, 4) • Экран делится на две части: игровое поле и окно диалога между игроками. Возможно использование дополнительных элементов интерфейса. Демонстрационный код доступен в сети Кафедры ВС: /home/STUDENTS/Lab. Works/kurs

ВЗАИМОДЕЙСТВИЕ МЕЖДУ УЗЛАМИ РАСПРЕДЕЛЁННОЙ СИСТЕМЫ Вопрос. Как узлы РС могут взаимодействовать друг с другом? ВЗАИМОДЕЙСТВИЕ МЕЖДУ УЗЛАМИ РАСПРЕДЕЛЁННОЙ СИСТЕМЫ Вопрос. Как узлы РС могут взаимодействовать друг с другом? Ответ. Только по средствам передачи сообщений. Вопрос. Что нужно реализовать, чтобы узлы РС «понимали» друга при передачи сообщений? Ответ. Принцип открытой системы.

ПРИЛОЖЕНИЯ ПРИКЛАДНОЙ 7 -Й УРОВЕНЬ ПРИКЛАДНОЙ ПРЕДСТАВИТЕЛЬСКИЙ 6 -Й УРОВЕНЬ ПРЕДСТАВИТЕЛЬСКИЙ СЕАНСОВЫЙ 5 -Й ПРИЛОЖЕНИЯ ПРИКЛАДНОЙ 7 -Й УРОВЕНЬ ПРИКЛАДНОЙ ПРЕДСТАВИТЕЛЬСКИЙ 6 -Й УРОВЕНЬ ПРЕДСТАВИТЕЛЬСКИЙ СЕАНСОВЫЙ 5 -Й УРОВЕНЬ СЕАНСОВЫЙ ТРАНСПОРТНЫЙ 4 -Й УРОВЕНЬ ТРАНСПОРТНЫЙ СЕТЕВОЙ 3 -Й УРОВЕНЬ СЕТЕВОЙ КАНАЛЬНЫЙ 2 -Й УРОВЕНЬ КАНАЛЬНЫЙ ФИЗИЧЕСКИЙ 1 -Й УРОВЕНЬ СРЕДА ПЕРЕДАЧИ ФИЗИЧЕСКИЙ

ЗАПРОС ОТВЕТ ОБРАБОТКА Пассивная сторона взаимодействия Активная сторона взаимодействия Называется: клиентом Называется: сервером Передаёт ЗАПРОС ОТВЕТ ОБРАБОТКА Пассивная сторона взаимодействия Активная сторона взаимодействия Называется: клиентом Называется: сервером Передаёт серверу запрос, включающий требование выполнить какое-либо действие или выдать какую-либо информацию. Ожидает от клиента запрос, включающий требование выполнить какое-либо действие или выдать какую-либо информацию. Ожидает ответа от сервера. Получив запрос, сервер обрабатывает его соответствующим образом и выдает клиенту ответ, содержащий результат его действий. Клиент получает ответ от сервера.

Механизм сокетов #include <sys/socket. h> struct sockaddr { short int sa_family; char sa_data[14]; } Механизм сокетов #include struct sockaddr { short int sa_family; char sa_data[14]; } sa_family: AF_UNIX ( или AF_LOCAL), AF_INET; type: SOCK_STREAM, SOCK_DDGRAM;

Сокет TCP/IP v 4 struct sockaddr_in { short int sa_family; u_int 16_t sin_port; struct Сокет TCP/IP v 4 struct sockaddr_in { short int sa_family; u_int 16_t sin_port; struct in_addr sin_addr; } { u_int 32_t s_addr. }

ПРЯМОЙ И ОБРАТНЫЙ ПОРЯДОК БАЙТ Числа в памяти ЭВМ могут храниться в прямом и ПРЯМОЙ И ОБРАТНЫЙ ПОРЯДОК БАЙТ Числа в памяти ЭВМ могут храниться в прямом и обратном порядке байт. При передачи информации необходимо гарантировать, что данные воспринимаются сторонами в одинаковом формате #include uint 32_t htonl(uint 32_t hostlong); uint 16_t htons(uint 16_t hostshort); uint 32_t ntohl(uint 32_t netlong); uint 16_t ntohs(uint 16_t netshort);

 «ЧЕЛОВЕЧЕСКОЕ» ПРЕДСТАВЛЕНИЕ СЕТЕВОГО АДРЕСА 192. 168. 1. 1 000000011010100011000000 #include <sys/socket. h> #include «ЧЕЛОВЕЧЕСКОЕ» ПРЕДСТАВЛЕНИЕ СЕТЕВОГО АДРЕСА 192. 168. 1. 1 000000011010100011000000 #include #include #include int inet_aton(const char *cp, struct in_addr *inp); char *inet_ntoa(struct in_addr in); in_addr_t inet_addr(const char *cp);

Пример клиента sockfd = socket (AF_INET, SOCK_STREAM, 0); bzero (&server, sizeof (struct sockaddr_in)); server. Пример клиента sockfd = socket (AF_INET, SOCK_STREAM, 0); bzero (&server, sizeof (struct sockaddr_in)); server. sin_family = AF_INET; server. sin_port = htons(7); inet_aton ("127. 0. 0. 1", &(server. sin_addr)); connect (sockfd, (struct sockaddr *)&server, sizeof (server)); write (sockfd, snd_line, strlen(snd_line)); read (sockfd, recv_line, 100); printf ("Принято %d байт [%s]. n", res, recv_line); close (sockfd);

Пример сервера sockfd = socket (AF_INET, SOCK_STREAM, 0); bzero (&server, sizeof (struct sockaddr_in)); server. Пример сервера sockfd = socket (AF_INET, SOCK_STREAM, 0); bzero (&server, sizeof (struct sockaddr_in)); server. sin_family = AF_INET; server. sin_port = htons(7); server. sin_addr. s_addr = htonl(INADDR_ANY); bind (sockfd, (struct sockaddr *) &server, sizeof (server)); listen (sockfd, 10); client_size = sizeof (struct sockaddr_in); clientfd = accept (sockfd, (struct sockaddr *)&client, &client_size); read (sockfd, recv_line, 100); write (sockfd, snd_line, strlen(snd_line)); printf ("Принято %d байт [%s]. n", res, recv_line); close (clientfd); close (sockfd);