Создание последовательного сервера с установлением логического соединения (TCP/IP)

Автор: Пользователь скрыл имя, 27 Февраля 2012 в 02:45, лабораторная работа

Описание работы

Цель: изучить методы создания серверов, используя алгоритм последовательной обработки запросов.
Условие задания: осуществить взаимодействие клиента и сервера на основе протокола TCP/IP. Функционирование клиента и сервера реализовать следующим образом: клиент посылает серверу произвольный набор символов, сервер замещает каждый четвертый символ на «%».

Работа содержит 1 файл

отчет.doc

— 28.00 Кб (Скачать)


Учреждение образования «Белорусский государственный университет информатики и радиоэлектроники»

 

Кафедра ЭИ

 

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

 

 

 

 

 

 

 

 

 

Лабораторная работа №1

 

«Создание последовательного сервера с установлением логического соединения (TCP/IP)»

 

 

 

 

 



Выполнил:

студент гр.072301

Божко П. С.

Проверил:

Бутов А. А.



 

 

 

 

 

 

 

 

 

 

 

Минск, 2012

Цель: изучить методы создания серверов, используя алгоритм последовательной обработки запросов.

 

Условие задания: осуществить взаимодействие клиента и сервера на основе протокола TCP/IP. Функционирование клиента и сервера реализовать следующим образом: клиент посылает серверу произвольный набор символов, сервер замещает каждый четвертый символ на «%».

 

Выполнение задания:

Файл server.cpp

 



#include <arpa/inet.h>

#include <sys/socket.h>

#include <resolv.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <iostream>

using namespace std;

 

int main()

{

int sock, sd, bytes_read;

char buf[80];

struct sockaddr_in addr;

addr.sin_family = AF_INET;

addr.sin_port = htons(1024);

addr.sin_addr.s_addr = inet_addr("127.0.0.1");

if((sd = socket(AF_INET, SOCK_STREAM, 0)) < 0)

   {

    perror("Ошибка создания сокета сервера.");

    exit(1);

   }

if(bind(sd, (sockaddr*)&addr, sizeof(addr)) < 0)

   {

    perror("Ошибка инициализации сокета.");

    exit(2);

   }

printf("Сервер запущен.\n");

listen(sd, 1); 

while(1)

{

  if((sock = accept(sd, NULL, NULL)) < 0)

    {

     perror("Ошибка соединения с клиентом.");

     exit(4);

    }

  while(1)

    {

     bytes_read = recv(sock, buf, 80, 0);

     if(bytes_read <= 0) break;

     buf[strlen(buf)+1] = '\0';

              printf("%s\n", buf);

     for(int i=3; i<strlen(buf); i+=4)

       {

        buf[i]='%';

                 }              

     send(sock, buf, bytes_read, 0);

    }

close(sock);

}

close(sd);

return 0;

}



 

Файл client.cpp



#include <arpa/inet.h>

#include <sys/socket.h>

#include <resolv.h>

#include <iostream>

#include <stdlib.h>

#include <string.h>

#include <stdio.h>

using namespace std;

 

char message[80];

char buf[sizeof(message)];

 

int main()

{

int sd, Exit = 1;

struct sockaddr_in addr;

addr.sin_family = AF_INET;

addr.sin_port = htons(1024);

addr.sin_addr.s_addr = inet_addr("127.0.0.1");

if((sd = socket(AF_INET, SOCK_STREAM, 0)) < 0)

    {

     perror("Ошибка создания сокета.");

     exit(1);

    }

if(connect(sd, (struct sockaddr *)&addr, sizeof(addr)) < 0)

    {

     perror("Ошибка соединения с сервером.");

     exit(2);

    }

while(Exit)

{

  printf("Введите строку символов\n");

  scanf("%s", message); 

  send(sd, message, strlen(message)+1, 0);

  recv(sd, buf, 80, 0);

  printf("%s\n", buf);

  printf("\nПродолжить работу с сервером?\n1 - да\n0-нет\n\n");

  scanf("%d", &Exit);

}

close(sd);

return 0;

}

 



 

 

 

 

 

 

 

 

 

 

Результаты работы программы:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вывод:

В ходе выполнения лабораторной работы мною были изучены принципы организации сетевого взаимодействия между клиентом и сервером посредством методов TCP/IP  протоколов.



Информация о работе Создание последовательного сервера с установлением логического соединения (TCP/IP)