|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Клієнт
#include "stdafx.h" #include <stdio.h> #include <iostream.h> #include <string.h> #include <math.h> #include <winsock2.h> #include <windows.h>
#define PORT 666
int main(int argc, char* argv[]) { char buff[1024]; printf("LAN TEST CLIENT\n");
while(true){ printf("ENTER SERVER IP-ADDRESS(type quit for exit):"); char ip[20]; cin>>ip; if(!strcmp(ip,"quit")) break;
// инициализация библиотеки Winsock if (WSAStartup(0x202,(WSADATA *)&buff[0])) { printf("WSAStart error %d\n",WSAGetLastError()); return -1; }
// создание сокета SOCKET my_sock; my_sock=socket(AF_INET,SOCK_STREAM,0); if (my_sock < 0) { printf("Socket() error %d\n",WSAGetLastError()); return -1; }
// установка соединения // заполнение структуры sockaddr_in // указание адреса и порта сервера sockaddr_in dest_addr; dest_addr.sin_family=AF_INET; dest_addr.sin_port=htons(PORT); HOSTENT *hst;
// преобразование IP адреса из символьного в // сетевой формат if (inet_addr(ip)!=INADDR_NONE) dest_addr.sin_addr.s_addr=inet_addr(ip); else // попытка получить IP адрес по доменному // имени сервера if (hst=gethostbyname(ip)) // hst->h_addr_list содержит не массив адресов, // а массив указателей на адреса ((unsigned long *)&dest_addr.sin_addr)[0]= ((unsigned long **)hst->h_addr_list)[0][0]; else { printf("Invalid address %s\n",ip); closesocket(my_sock); WSACleanup(); return -1; }
// адрес сервера получен – пытаемся установить // соединение if (connect(my_sock,(sockaddr *)&dest_addr, sizeof(dest_addr))) { printf("Connect error %d\n",WSAGetLastError()); return -1; }
printf("Connection to %s established\n\n",ip);
//Передаваемые данные char data[600];
int nsize; //Переменные для вычисления времени __int64 start; __int64 end; __int64 freq; //Получаем частоту счетчика QueryPerformanceFrequency((LARGE_INTEGER*)&freq); //Массив для хранения времени каждой посылки double diff[5]; //Отправление и получение сообщения, не влияющего на результат теста. //Применяется, т.к. первое сообщение отправляется/получается долго, что //искажает результаты send(my_sock,&data[0],sizeof(data),0); nsize=recv(my_sock,&buff[0], sizeof(buff)-1,0); //цикл отправки сообщений для теста for(int i=0;i<5;i++){ // запоминаем значение счетчика перед передачей QueryPerformanceCounter((LARGE_INTEGER*)&start); //отправляем сообщение send(my_sock,&data[0],sizeof(data),0); //получаем ответ if((nsize=recv(my_sock,&buff[0], sizeof(buff)-1,0)) !=SOCKET_ERROR){ //запоминаем время приема QueryPerformanceCounter((LARGE_INTEGER*)&end); //Вычисляем время приема/передачи в микросекундах diff[i]=ceil((double)(end-start)/(double)freq*1000000); cout<<"Elapsed time:"<<(DWORD)freq<<"="<<diff[i]<<"mks"<<endl;
}
}
//Подсчитываем среднее значение времени double av=0; for(i=0;i<5;i++) av+=diff[i]; cout<<"Testing is finished. Average time:"<<ceil(av/5)<<"mks"<<endl<<endl<<endl;
closesocket(my_sock); WSACleanup();
} return -1; }
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |