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

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

Автор:   •  Сентябрь 25, 2018  •  Контрольная работа  •  15,496 Слов (62 Страниц)  •  753 Просмотры

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

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

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

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

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

Специальность Информационные системы и технологии в экономике

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

По курсу Компьютерные сети

Вариант № 16

Минск, 2016


Часть 1

Задание 1

Осуществить взаимодействие клиента и сервера на основе протокола TCP/IP. Функционирование клиента и сервера реализовать следующим образом: клиент посылает два числа серверу и одну из математических операций: "*", "/", "+", "-" ,- сервер соответственно умножает, делит, складывает либо вычитает эти два числа и ответ посылает ответ назад клиенту.

Нам необходимо написать две программы серверную и клиентскую.

В серверной программе инициализируем WinSock API, используя функцию WSAStartup. Создаем сокет, использующий протокол TCP, при помощи функции socket. Устанавливаем сокету адрес и порт, используя функцию bind. Далее ожидаем установки соединения с клиентом, для чего используем функцию listen. После прихода с клиента предложения о соединении, принимаем его, используя функцию accept. И начинаем принимать данные с клиента, используя функцию recv. Принятые данные обрабатываем, исходя из условия задачи, и отсылаем результат обработки, используя функцию send. В конце программы закрываем сокет, при помощи функции closesocket, и прекращаем работу WinSock API, используя функцию WSACleanup.

В клиентской программе инициализируем WinSock API, используя функцию WSAStartup. Создаем сокет, использующий протокол TCP, при помощи функции socket. Устанавливаем соединение с сервером, используя функцию connect. Считываем данные с потока входа, при помощи функции std::cin.getline, и отсылаем их на сервер, используя функцию send. Получаем результат с сервера, используя функцию recv, и выводим его на экран, посредством функции std::cout. В конце программы закрываем сокет, при помощи функции closesocket, и прекращаем работу WinSock API, используя функцию WSACleanup.

#include 

#include 

#include 

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

int main() {

        setlocale(LC_ALL, "Russian");

        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);

        // т.к. клиент и сервер на одном компьютере,

        // пишем адрес 127.0.0.1

        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));

        char buf[255], b[255];

        std::cout << "Введите два числа и математическую операцию (+, -, *, или /)

       между ними.\n Например: 2+2" << std::endl;

        std::cin.getline(buf, 100, '\n');

        send(s, buf, sizeof(buf), 0);

        if (recv(s, b, sizeof(b), 0) != 0) {

                b[strlen(b)] = '\0'; //Удаление ненужных символов

                // в конце строки

                std::cout << b << std::endl;

                std::cin.get();

        }

        closesocket(s);

        WSACleanup();

        return 0;

}

#include 

#include 

#include 

#include 

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

int main() {

        WORD wVersionRequested;

        WSADATA wsaData;

        wVersionRequested = MAKEWORD(2, 2);

        WSAStartup(wVersionRequested, &wsaData);

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

        struct sockaddr_in local;

        local.sin_family = AF_INET;

        local.sin_port = htons(1280);

...

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