Добавил:
inrad
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Компьютерные сети / lab2 / UPDserv / serv
.cpp//подключение библиотек
#include <winsock2.h>
#include <iostream.h>
#include <stdlib.h>
#include <process.h>
//главная фукнция программы
void main()
{
//определение максимально возможной версии WinSock
WORD wVersionRequested;
// структура для хранения данных версии и др.
WSADATA wsaData;
//инициализация библиотеки
int err;
err = WSAStartup(wVersionRequested, &wsaData);
//открытие сокета
SOCKET s = socket (AF_INET, SOCK_DGRAM, 0);
//структура адреса
struct sockaddr_in ad;
//порт ассоциации с сокетом
ad.sin_port = htons (1024);
//стандартное значение
ad.sin_family = AF_INET;
//IP адрес компьютера
ad.sin_addr.s_addr = 0;
bind (s, (struct sockaddr*) &ad, sizeof(ad));
//импорт числа клиента
char b[5];
int l, chislo, mas[5];
l = sizeof(ad);
int rv = recvfrom(s, b, lstrlen(b), 0, (struct sockaddr*) &ad, &l);
//преобразование из строки в число
chislo = atoi(b);
//вспомогательная переменная-делитель
int devision = 10000;
//преобразование числа в массив для сортировки
for (int i=0; i<5; i++)
{
mas[i] = chislo/devision;
chislo = chislo - mas[i]*devision;
devision= devision/10;
cout <<mas[i]<<" mas"<<endl;
}
int temp;
// сортировка
for (int pass = 1; pass<5; pass++)
for (int i = 0; i<4; i++)
if (mas[i]<mas[i+1])
{
temp = mas[i];
mas[i] = mas[i+1];
mas[i+1] = temp;
}
// вывод упорядоченного массива
for (i = 0; i<5; i++)
cout<<mas[i]<<"\t";
cout<<endl;
// преобразование массива в число
devision = 10000;
chislo = 0;
for (i=0; i<5; i++)
{
chislo = chislo + mas[i]*devision;
devision= devision/10;
}
cout<<chislo<<endl;
/////////////////
//преобразование числа в строку
_itoa(chislo, b, 10);
//передача строки клиенту
sendto(s, b, lstrlen(b), 0, (struct sockaddr*) &ad, l);
//закрытие сокета
closesocket(s);
//завершение работы с библиотекой
WSACleanup();
}