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

Тексти програм. #include "Unit1.h"

Читайте также:
  1. Creating a VHDL Source (создание файла, содержащего текст программы на языке VHDL).
  2. II-й этап: Гала – концерт 25 июня 2013года. В программе празднования Дня города.
  3. II. Требования к структуре образовательной программы дошкольного образования и ее объему
  4. III. Обучение по образовательным программам
  5. III. ПРОГРАМА НАВЧАЛЬНОЇ ТА ВИРОБНИЧОЇ ПРАКТИКИ В ОРГАНАХ ДЕРЖАВНОЇ ВИКОНАВЧОЇ СЛУЖБИ УКРАЇНИ
  6. III. Требования к условиям реализации основной образовательной программы дошкольного образования
  7. IV ПРОГРАМА ПРАКТИКИ
  8. IV. Программа соревнований
  9. IV. Требования к результатам освоения основной образовательной программы дошкольного образования
  10. SWOT-анализ раздела «Цели образовательной программы»
  11. USB программатор ЭБУ.
  12. V. КРОССВОРД «ПУТЕШЕСТВИЕ ПО ТЕАТРАЛЬНОЙ ПРОГРАММКЕ»

Програма клієнт:

//---------------------------------------------------------------------------

 

#include <vcl.h>

#pragma hdrstop

 

#include "Unit1.h"

#include <winsock2.h> // Wincosk2.h має бути

// підключений раніше windows.h!

#include <windows.h>

#define SERVER_PORT 69

 

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

SOCKET Sock;

sockaddr_in local_addr;

 

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::FormCreate(TObject *Sender)

{ char buff[1024]; // Буфер для різних потреб

String s;

// Крок 1 - Ініціалізація Бібліотеки Сокетів

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

{

// Помилка!

s="Error WSAStartup "+ IntToStr(WSAGetLastError());

Memo1->Lines->Add(s);

return;

}

// Крок 2 - створення сокета

 

Sock = socket(AF_INET, SOCK_DGRAM, 0);// створення сокета

//AF_INET тип адреси, прийнятої в InterNet

//SOCK_DGRAM передача даних без створення каналів зв'язку через датаграмний протогол UDP

// Крок 3 пов'язання сокета з локальною адресою

 

local_addr.sin_family=AF_INET;

local_addr.sin_port=htons(SERVER_PORT);

// не забуваємо про мережевий порядок!!!

local_addr.sin_addr.s_addr=inet_addr("127.0.0.1");;

// клієнт підключається на '127.0.0.1'

 

 

}

//---------------------------------------------------------------------------

 

 

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)

{

shutdown(Sock, SD_BOTH);

closesocket(Sock);// закриття сокета

WSACleanup; // звільнення ресурсів

 

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

String s,s1; int lenAddr;

char *Buff;

//Buff = new char[256];

lenAddr= sizeof(local_addr);

s=Edit1->Text;

Buff = new char[s.Length()];

lstrcpy(Buff, s.c_str());

s1=s;

 

LARGE_INTEGER freq,time1,time2;double span;char buf[20];

QueryPerformanceFrequency(&freq);

QueryPerformanceCounter(&time1);

 

sendto(Sock, Buff, lstrlen(Buff), 0,(PSOCKADDR)&local_addr, lenAddr);

 

QueryPerformanceCounter(&time2);

time2.QuadPart -= time1.QuadPart;

span = (double) time2.QuadPart / freq.QuadPart;

s1+=" "+FloatToStrF(span,ffFixed,32,7)+" c";

Memo1->Lines->Add(s1);

 

 

}

//---------------------------------------------------------------------------

Програма сервер:

//---------------------------------------------------------------------------

 

#include <vcl.h>

#pragma hdrstop

 

#include "Unit1.h"

#include <winsock2.h> // Wincosk2.h має бути

// підключений раніше windows.h!

#include <windows.h>

#define SERVER_PORT 69

 

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

 

SOCKET Sock;

 

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{ char buff[1024]; // Буфер для різних потреб

String s;

// Крок 1 - Ініціалізація Бібліотеки Сокетів

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

{

// Помилка!

s="Error WSAStartup "+ IntToStr(WSAGetLastError());

Memo1->Lines->Add(s);

return;

}

// Крок 2 - створення сокета

 

Sock = socket(AF_INET, SOCK_DGRAM, 0);// створення сокета

//AF_INET тип адреси, прийнятої в InterNet

//SOCK_DGRAM передача даних без створення каналів зв'язку через датаграмний протогол UDP

// Крок 3 пов'язання сокета з локальною адресою

sockaddr_in local_addr;

local_addr.sin_family=AF_INET;

local_addr.sin_port=htons(SERVER_PORT);

// не забуваємо про мережевий порядок!!!

local_addr.sin_addr.s_addr=0;

// сервер приймає підключення

// на всі IP-адреса

 

// викликаємо bind для скріплення

if (bind(Sock,(sockaddr *) &local_addr,

sizeof(local_addr)))

{

// Помилка

s="Error bind "+ IntToStr(WSAGetLastError());

Memo1->Lines->Add(s);

closesocket(Sock); // закриваємо сокет!

WSACleanup();

return;

}

WSAAsyncSelect (Sock, Form1->Handle, WM_USER, FD_READ | FD_CLOSE | FD_WRITE);

}

 

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

shutdown(Sock, SD_BOTH);

closesocket(Sock);// зачинення сокета

WSACleanup; // звільнення ресурсів

 

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::OnWSANetEvent1(TMessage& Msg)

{

char *Buff; // буфер для зберігання інформації

int lenAddr;

sockaddr_in local_addr;

local_addr.sin_family=AF_INET;

local_addr.sin_port=htons(SERVER_PORT);

// не забуваємо про мережевий порядок!!!

local_addr.sin_addr.s_addr=0;

// сервер приймає підключення

// на всі IP-адреса

lenAddr= sizeof(local_addr);

 

// обробка повідомлення про прийом інформації

if (WSAGETSELECTEVENT(Msg.LParam) == FD_READ)

{ Buff = new char[256];

// читання информаци з каналу

recvfrom(Sock, Buff, 256, 0, (PSOCKADDR)&local_addr,&lenAddr);

Memo1->Lines->Add(Buff);

// recv ((SOCKET)Msg.WParam,Buff,256,0);

} // обробка повідомлення про розрив з'єднання

if (WSAGETSELECTEVENT(Msg.LParam) == FD_CLOSE)

{ // закриття сокета

closesocket(Sock);

Sock = INVALID_SOCKET;

}

Msg.Result = 0;

}


1 | 2 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.016 сек.)