Реферат Курсовая Конспект
Текст полностью прокомментированной программы клиента - раздел Информатика, Описание способов тестирования сетей // Пример Простого Udp-Клиента #include <vcl.h> #prag...
|
// пример простого UDP-клиента
#include <vcl.h>
#pragma hdrstop
#pragma argsused
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <winsock2.h>
#include <windows.h>
#include <math.hpp>
#include "winbase.h"
#define PORT 666
int main(int argc, char* argv[])
{
char* SERVERADDR="127.0.0.1";
char buff[10 * 1014];
LARGE_INTEGER m_sw_freq,counter1,counter2;
QueryPerformanceFrequency(&m_sw_freq);//инициализация таймера
printf("UDP CLIENTnType quit to quitn");
// Шаг 1 - иницилизация библиотеки Winsocks
if (WSAStartup(0x202, (WSADATA *)&buff[0]))
{
printf("WSAStartup error: %dn", WSAGetLastError());
printf("Press any key for exit...");
getch();
return -1;
}
// Шаг 2 - открытие сокета
SOCKET my_sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (my_sock == INVALID_SOCKET)
{
printf("socket() error: %dn", WSAGetLastError());
WSACleanup();
printf("Press any key for exit...");
getch();
return -1;
}
// Шаг 3 - обмен сообщений с сервером
HOSTENT *hst;
sockaddr_in dest_addr;
dest_addr.sin_family = AF_INET;
dest_addr.sin_port = htons(PORT);
// ввод IP адресса сервера
printf("Input Server UDP addr:");
gets(SERVERADDR);
// определение IP-адреса узла
if (inet_addr(SERVERADDR) != INADDR_NONE)
dest_addr.sin_addr.s_addr = inet_addr(SERVERADDR);
else
{
if (hst = gethostbyname(SERVERADDR))
dest_addr.sin_addr.s_addr = ((unsigned long **) hst->h_addr_list)[0][0];
else
{
printf("Unknown host: %dn", WSAGetLastError());
closesocket(my_sock);
WSACleanup();
printf("Press any key for exit...");
getch();
return -1;
}
}
while (1)
{
// чтение сообщения с клавиатуры
printf("S<=C: "); fgets(&buff[0], sizeof(buff) - 1, stdin);
if (!strcmp(&buff[0], "quitn")) break;
QueryPerformanceCounter(&counter1);//чтение начального системного времени
// Передача сообщений на сервер
sendto(my_sock, &buff[0], strlen(&buff[0]), 0,
(sockaddr *)&dest_addr, sizeof(dest_addr));
// Прием сообщения с сервера
sockaddr_in server_addr;
int server_addr_size = sizeof(server_addr);
int n = recvfrom(my_sock, &buff[0], sizeof(buff) - 1, 0,
(sockaddr *)&server_addr, &server_addr_size);
QueryPerformanceCounter(&counter2);//чтение конечного системного времени
if (n == SOCKET_ERROR)
{
printf("recvfrom() error: %dn", WSAGetLastError());
closesocket(my_sock);
WSACleanup();
printf("Press any key for exit...");
getch();
return -1;
}
buff[n] = 0;
// Вывод принятого с сервера сообщения на экран
printf("S=>C:%s", &buff[0]);
printf("time request: %s msn",
FloatToStr(RoundTo(double(counter2.QuadPart-counter1.QuadPart)*1000/double(m_sw_freq.QuadPart),-3)));
}
// Шаг последний - выход
closesocket(my_sock);
WSACleanup();
return 0;
}
– Конец работы –
Эта тема принадлежит разделу:
Общий алгоритм работы клиент серверной системы тестирования сети... Запуск программы сервера... Запуск программы клиента...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Текст полностью прокомментированной программы клиента
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов