Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Контрольная работа по "Компьютерной сети"

Автор:   •  Январь 2, 2023  •  Контрольная работа  •  7,813 Слов (32 Страниц)  •  123 Просмотры

Страница 1 из 32

Министерство образования Республики Беларусь

Учреждение образования

«БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ»

Институт информационных технологий

КОНТРОЛЬНАЯ РАБОТА

По дисциплине «Компьютерные сети»

Вариант 2

        

Минск,2021

Часть 1 – программирование (5 задач, из лаб. Работ 1-4, 8 по своему варианту):

Задача №1 (л.р.1 вариант №2): Осуществить взаимодействие клиента и сервера на основе протокола TCP/IP. Функционирование клиента и сервера реализовать следующим образом: клиент посылает слово серверу, сервер возвращает назад в обратном порядке следования букв это слово клиенту.

Краткое описание алгоритма:

Клиент отправляет слово на сервер, сервер обрабатывает информацию и переворачивает слова задом на перед, результат возвращается клиенту.

Листинг с пояснениями:

//сервер

#define _WINSOCK_DEPRECATED_NO_WARNINGS

#include <winsock2.h> //библиотека, позволяющая реализовать программный интерфейс WinSock

#include <iostream>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main()

{

        WORD wVersionRequested; //определяет макс. номер версии WinSock, доступный приложению

        WSADATA wsaData; //структура wsaData, содержит номер версии (поле wVersion),

        //максимальный номер версии (поле wHighVersion),

        //текстовые строки с описанием реализации WinSock, максимальное число сокетов,

        //доступных процессу и максимально допустимый размер дейтаграмм

        wVersionRequested = MAKEWORD(2, 2);

        WSAStartup(wVersionRequested, & wsaData); //инициализация WinSock API

        SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); //дескриптор сокета, функция для

        // создания сокета, принимает три параметра: домен, тип сокета и протокол

        struct sockaddr_in local; //структура адреса

        local.sin_family = AF_INET; //всегда имеет значение AF_INET

        local.sin_port = htons(1280); //определяет порт, который будет ассоциирован с сокетом

        local.sin_addr.s_addr = htonl(INADDR_ANY); //физический IP-адрес компьютера

        int c = bind(s, (struct sockaddr*)&local, sizeof(local)); //для связывания конкретного адреса с сокетом

        int r = listen(s, 5); //помещает сокет в состояние прослушивания

        while (true)

        {

                char b[255];

                sockaddr_in remote_addr;

                int size = sizeof(remote_addr);

                SOCKET s2 = accept(s, (struct sockaddr*)&remote_addr, &size);//При получении запроса клиента

                //выполняется открытие соединения

                while (recv(s2, b, sizeof(b), 0) != 0) //прием данных через сокет потока

                {

                        _strrev(b); //инвертировать строку

                        send(s2, b, sizeof(b), 0);// посылает данные на соединенный сокет

                }

                closesocket(s2); //завершение работы сокета

        }

        WSACleanup(); //завершая программу, прекращаем работу с WinSock

        return 0;

}

//клиент

#define _WINSOCK_DEPRECATED_NO_WARNINGS

#include <winsock2.h>

#include <iostream>

#include <stdlib.h>

#include <windows.h>

#pragma comment(lib, "WS2_32.lib")

using namespace std;

int main()

{

        WORD wVersionRequested;

        WSADATA wsaData;

        wVersionRequested = MAKEWORD(2, 2);

        WSAStartup(wVersionRequested, &wsaData);

        struct sockaddr_in peer;

        peer.sin_family = AF_INET;

        peer.sin_port = htons(1280);

        peer.sin_addr.s_addr = inet_addr("127.0.0.1");// т.к. клиент и сервер на одном компьютере,

                SOCKET s = socket(AF_INET, SOCK_STREAM, 0);

        connect(s, (struct sockaddr*)&peer, sizeof(peer));//приложение-клиент посылает запрос

...

Скачать:   txt (47.8 Kb)   pdf (236 Kb)   docx (269 Kb)  
Продолжить читать еще 31 страниц(ы) »
Доступно только на Essays.club