Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Текст полностью прокомментированной программы клиента

Читайте также:
  1. Ex. 1 Прочитайте и письменно переведите текст.
  2. I READING Текст №3 My grandfather
  3. I)Однофакторный дисперсионный анализ (выполняется с применением программы «Однофакторный дисперсионный анализ» надстройки «Анализ данных» пакета Microsoft Excel).
  4. I.1.2. Божественное — человеческое в авторитетных текстах ислама
  5. II. Речевая деятельность человека. Создание текста. Коммуникативные качества хорошей речи и способы их достижения
  6. II. Структура программы
  7. III READING Текст №1 Harrods Christmas sale
  8. III. Ожидаемый результат реализации программы
  9. III. Реферирование текста.
  10. IV READING Текст №9 There is conflict over its abilities

// пример простого 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 CLIENT\nType quit to quit\n");

 

// Шаг 1 - иницилизация библиотеки Winsocks

if (WSAStartup(0x202, (WSADATA *)&buff[0]))

{

printf("WSAStartup error: %d\n", 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: %d\n", 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: %d\n", 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], "quit\n")) 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: %d\n", 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 ms\n",

FloatToStr(RoundTo(double(counter2.QuadPart-counter1.QuadPart)*1000/double(m_sw_freq.QuadPart),-3)));

}

 

// Шаг последний - выход

closesocket(my_sock);

WSACleanup();

return 0;

}

 




Дата добавления: 2014-12-18; просмотров: 26 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав