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

Расчет конфигурации сети Ethernet

Автор:   •  Октябрь 14, 2018  •  Контрольная работа  •  7,197 Слов (29 Страниц)  •  547 Просмотры

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

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

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

Белорусский государственный университет информатики и

 радиоэлектроники

Кафедра экономической информатики

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

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

на тему: «Расчет конфигурации сети Ethernet»

Вариант 1

Минск 2009


Часть 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

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

        local.sin_addr.s_addr=htonl(INADDR_ANY);

        int c=bind(s,(struct sockaddr*)&local,sizeof(local));

        int r=listen(s,5);

        while (true) {

                char res[255],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) {

                        int i1 = 0;

                        int i2 = 0;

                        if (strchr(b, '+') != 0) {

                                i1 = atoi(strtok(b, "+"));

                                i2 = atoi(strtok(0, "+"));

                                itoa(i1 + i2, res, 10);

                        } else if (strchr(b, '-') != 0) {

                                i1 = atoi(strtok(b, "-"));

                                i2 = atoi(strtok(0, "-"));

                                itoa(i1 - i2, res, 10);

                        } else if (strchr(b, '*') != 0) {

                                i1 = atof(strtok(b, "*"));

                                i2 = atof(strtok(0, "*"));

                                itoa(i1 * i2, res, 10);

                        } else if (strchr(b, '/') != 0) {

                                i1 = atof(strtok(b, "/"));

                                i2 = atof(strtok(0, "/"));

                                itoa(i1 / i2, res, 10);

                        }

                        // Посылает данные на соединенный сокет

                        send(s2,res,sizeof(res)-2,0);

                }

                closesocket(s2);

...

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