- •Часть 1
- •Серверное приложение:
- •Клиентское приложение:
- •Серверное приложение:
- •Клиентское приложение:
- •Серверное приложение:
- •Клиентское приложение:
- •Серверное приложение:
- •Клиентское приложение:
- •Клиентское приложение:
- •Часть 2
- •Interframe gap, jam-последовательность, slot time, collision window – назначение и расчет
- •Список использованной литературы.
Клиентское приложение:
#include <winsock2.h>
#include <iostream>
#include<stdio.h>
#include<io.h>
#pragma comment(lib, "ws2_32.lib")
char name[256];
//Главная функция программы
int main()
{
//Инициализация библиотеки WinSock
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD(2,2);
int err = 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");
//Создание сокета UDP
SOCKET s=socket(AF_INET,SOCK_DGRAM,0);
connect (s, (struct sockaddr*)&peer, sizeof (peer));
int t=sizeof(peer);
//Ввод пользователем даты
puts("Enter the date (dd.mm.yy): ");
gets(name);
//Отправка даты файла серверу
sendto(s,(LPCSTR)&name,sizeof(name),0,(LPSOCKADDR)&peer,t);
if (recvfrom((SOCKET)s,(LPSTR)&name,sizeof(name),0,(LPSOCKADDR) &peer, &t )!=0)
printf("\nReceived: %s\n",name);
//Очистка структур WinSock
WSACleanup();
return 0;
}
Результаты тестирования:
Рисунок 3 – Запущено серверное приложение
Рисунок 4 – Результат работы клиентского приложения
Задача №3
Осуществить взаимодействие клиента и сервера на основе протокола TCP/IP. Реализовать параллельное соединение с использованием многопоточности. Функциональные возможности клиента реализовать следующим образом: клиент вводит с клавиатуры строку символов и посылает ее серверу. Признак окончания ввода строки - нажатие клавиши "Ввод". Функциональные возможности сервера реализовать следующим образом: сервер, получив эту строку, должен определить длину введенной строки, и, если эта длина четная, то удаляются 3 первых и 2 последних символа. Результаты преобразований этой строки возвращаются назад клиенту.
Краткое описание алгоритма:
Серверное приложение:
// Максимальный номер версии WinSock
// Структура для WSAStartup
// Инициализируем WinSock API
// Создаем серверный сокет
// Создаем структуру данных соединения
// Поле sin_family всегда имеет значение AF_INET
// Слушаем 1280 порт
// Слушаем все сетевые соединения
// Связываем сокет с соединением
// Инициализируем прослушивание сокета
// Сокет для клиента
// Адрес клиента
// Цикл извлечения запросов на подключение из очереди
// Вызов нового потока для обслуживания клиента
// Получаем клиентский сокет
// Получаем данные из сокета
// Обрабатываем полученную строку
// Отправляем результат клиенту
// Завершаем работу клиентского сокета
Клиентское приложение:
// Максимальный номер версии WinSock
// Структура для WSAStartup
// Инициализируем WinSock API
// Создаем структуру данных соединения
// Поле sin_family всегда имеет значение AF_INET
// Обращаемся через порт 1280
// Т.к. клиент и сервер на одном компьютере, пишем адрес 127.0.0.1
// Создаем клиентский сокет
// Подключаемся к серверу
// Отправляем строку на сервер для обработки
// Получаем ответ от сервера
// Завершаем работу сокета
// Завершаем использование WinSock DLL
Листинги с пояснениями: