Розробка програмного комплексу, що здійснює передачу даних між різними персональними комп’ютерами

Аналіз сучасного стану мережевих технологій програмування. Характеристика еталонної моделі OSI. Розгляд транспортних протоколів ТСР та UDP. Дослідження архітектури клієнт-сервер. Технології взаємодії між процесами. Реалізація класів передачі даних.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 30.01.2020
Размер файла 508,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

#include "WebSocketWithoutConnect.h"

Далі в головній функції main необхідно створити екземпляр даного класу, проініціалізувати буфер для відправки повідомлення та за допомогою вище створених екземплярів класів провести обмін повідомленнями.

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>

#include "WebSocketWithoutConnect.h"

void init(char* sendBuf)

{

size_t count;

puts("Input text:");

_cgets_s(sendBuf, (size_t)256, (size_t*)(&count));

}

int main()

{

WebSocketWithoutConnect* wss_;

sockaddr_in sockAddr_;

SOCKET s_, ss_;

char sendBuf[1024];

init(sendBuf);

wss_ = new WebSocketWithoutConnect(sockAddr_, ss_, 5002, 'C');

wss_->sendMessage(sendBuf);

}

2.3 Програма B

Згідно із поставленим завданням, програмна В повинна містити засобми для передачі повідомлень за допомогою іменованого каналу. Повідомлення для відправки зчитується з клавіатури. Отримане повідомлення виводиться у файл. Для більшої зручності розіб'ємо код програми на модулі, які будемо використовувати під час виконання поставленого завдання.

В головному .срр файлі програми підключаються необхідні файли, .h, в яких описані необхідні класи. Також необхідно реалізувати даний клас. Лістинг даних класів наведено в додатку А. При створенні програми B, ми будемо використовувати клас NamedPipe. Необхідно підключити їх використовуючи наступний код:

#include "NamedPipe.h"

Далі в головній функції main необхідно створити екземпляри даних класів, проініціалізувати буфер для відправки повідомлення та за допомогою вище створених екземплярів класів провести обмін повідомленнями.

#include <iostream>

#include "NamedPipe.h"

int main()

{

HANDLE h_;

NamedPipe* namedPipe_;

wchar_t namePipeName[] = L"\\\\.\\Pipe\\pipeEB1";

char receiveBuf[1024];

namedPipe_ = new NamedPipe(namePipeName, h_, 'E');

namedPipe_->receiveMessage(receiveBuf);

FILE* f;

fopen_s(&f, "FromE.txt", "w");

fputs(receiveBuf, f);

fclose(f);

}

2.4 Програма C

Згідно із поставленим завданням, програмна С повинна містити засоби для передачі даних через сокети без та з встановленням зв'язку, а також засобми для передачі повідомлень за допомогою поштової скриньки. Повідомлення для відправки вводиться із клавіатури(перша частина), та зчитується з файлу. Отримане повідомлення виводиться на екран. Для більшої зручності розіб'ємо код програми на модулі, які будемо використовувати під час виконання поставленого завдання.

В головному .срр файлі програми підключаються необхідні файли, .h, в яких описані необхідні класи. Також необхідно реалізувати дані класи. Лістинг даних класів наведено в додатку А. При створенні програми C, ми будемо використовувати класи SocketWithoutConnect, SocketWithConnection i MailSlot. Необхідно підключити їх використовуючи наступний код:

#include "MailSlot.h"

#include "WebSocketWithoutConnect.h"

#include "WebSocketWithConnection.h"

Далі в головній функції main необхідно створити екземпляри даних класів, проініціалізувати буфер для відправки повідомлення та за допомогою вище створених екземплярів класів провести обмін повідомленнями.

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>

#include "MailSlot.h"

#include "WebSocketWithoutConnect.h"

#include "WebSocketWithConnection.h"

void init(char* buf)

{

puts("Input the message:");

gets_s(buf, 126);

FILE* f;

fopen_s(&f, "FromC.txt", "r");

char buf1[126];

fgets(buf1, 126, f);

fclose(f);

strcat(buf, " ");

strcat(buf, buf1);

puts("Message for send:");

puts(buf);

}

int main()

{

HANDLE h_, m_;

MailSlot* mailSlot_;

wchar_t nameMailSlot[] = L"\\\\.\\Mailslot\\Mailslot";

WebSocketWithoutConnect* ws_;

WebSocketWithConnection* wss_;

sockaddr_in sockAddr_, wssSockAddr_;

SOCKET s_, ss_;

char sendBuf[1024];

char receiveBuf[1024];

init(sendBuf);

mailSlot_ = new MailSlot(nameMailSlot, m_, 'D');

mailSlot_->receiveMessage(receiveBuf);

std::cout << "Received Message:" << receiveBuf;

ws_ = new WebSocketWithoutConnect(sockAddr_, s_, 5002, 'A');

ws_->receiveMessage(sendBuf);

wss_ = new WebSocketWithConnection(wssSockAddr_, ss_, 5001, 'E');

wss_->receiveMessage(sendBuf);

}

2.5 Програма D

Згідно із поставленим завданням, програмна Д повинна містити засоби для передачі даних за допомогою поштової скриньки. Повідомлення для відправки зчитується з двох файлів. Отримане повідомлення виводиться на екран. Для більшої зручності розіб'ємо код програми на модулі, які будемо використовувати під час виконання поставленого завдання.

В головному .срр файлі програми підключаються необхідні файли, .h, в яких описані необхідні класи. Також необхідно реалізувати дані класи. Лістинг даних класів наведено в додатку А. При створенні програми D, ми будемо використовувати клас MailSlot. Необхідно підключити їх використовуючи наступний код:

#include "MailSlot.h"

Далі в головній функції main необхідно створити екземпляри даних класів, проініціалізувати буфер для відправки повідомлення та за допомогою вище створених екземплярів класів провести обмін повідомленнями.

#include <iostream>

#include "MailSlot.h"

void init(char* sendbuf) {

FILE* f;

char* buf1 = new char[512];

fopen_s(&f, "FromD1.txt", "r");

fgets(sendbuf, 127, f);

fclose(f);

fopen_s(&f, "FromD2.txt", "r");

fgets(buf1, 512, f);

fclose(f);

strcat(sendbuf, buf1);

delete[]buf1;

}

int main()

{

HANDLE h_, m_;

MailSlot* mailSlot_;

wchar_t nameMailSlot[] = L"\\\\.\\Mailslot\\Mailslot";

char sendBuf[1024];

char receiveBuf[1024];

init(sendBuf);

mailSlot_ = new MailSlot(nameMailSlot, m_, 'C');

mailSlot_->sendMessage(sendBuf);

}

2.6 Програма Е

Згідно із поставленим завданням, програмна Е повинна містити засоби для передачі даних через іменований канал та сокет зі встановленням зв'язку. Повідомлення для відправки зчитується з клавіатури. Отримане повідомлення виводиться у файл. Для більшої зручності розіб'ємо код програми на модулі, які будемо використовувати під час виконання поставленого завдання.

В головному .срр файлі програми підключаються необхідні файли, .h, в яких описані необхідні класи. Також необхідно реалізувати даний клас. Лістинг даних класів наведено в додатку А. При створенні програми E, ми будемо використовувати клас NamedPipe і SocketWithConnecion. Необхідно підключити його використовуючи наступний код:

#include " NamedPipe.h"

#include "SocketWithConnection.h"

Далі в головній функції main необхідно створити екземпляри даних класів, проініціалізувати буфер для відправки повідомлення та за допомогою вище створених екземплярів класів провести обмін повідомленнями.

#include <iostream>

#include "NamedPipe.h"

#include "WebSocketWithConnection.h"

void init(char* sendBuf)

{

char buf1[512];

size_t count;

FILE* f;

fopen_s(&f, "FromE.txt", "r");

fgets(sendBuf, 512, f);

fclose(f);

puts("Input text:");

_cgets_s(buf1, (size_t)512, (size_t*)(&count));

strcat(sendBuf, buf1);

puts("Message for send:");

}

int main()

{

HANDLE m_;

wchar_t name[] = L"\\\\.\\Pipe\\pipeEB1";

WebSocketWithConnection* wss_;

NamedPipe* nP_;

sockaddr_in sockAddr_, wssSockAddr_;

SOCKET ss_;

char sendBuf[1024];

char receiveBuf[1024];

init(sendBuf);

nP_ = new NamedPipe(name, m_, 'B');

nP_->sendMessage(sendBuf);

wss_ = new WebSocketWithConnection(wssSockAddr_, ss_, 5001, 'A');

wss_->sendMessage(sendBuf);

}

3. РОЗРОБКА ТА ВИКОНАННЯ ТЕСТОВОГО ПРИКЛАДУ

Даний програмний комплекс повинен бути реалізований для використання на операційній системі сімейства Windows. Тому інструментом для створення даного комплексу буде програмний додаток Microsoft Visual Studio 2010 (рис. 3.1), який спеціалізується на створенні програм для операційних систем Windows.

Рисунок 3.1 Середовище програмування Visual Studio 2017

Для зручності розробки та тестування програм, необхідно створити пустий проект Visual C++ та дати йому назву. Після цього створимо ще чотири проекти консольних додатків С++, що будуть відповідати кожній з програм, що використовуються в комплексі (рис. 3.2).

Рисунок 3.2 Вигляд пустого проекту

Кожен проект повинен мати назву, що відповідає його задачі. Після створення проектів здійснюється написання коду. Далі цей код буде компілюватись, і у разі успішної процедури компіляції створюється програма, яка буде готова до роботи. Загальний вигляд проектів програмного комплексу представлено на рисунку 3.3.

Рисунок 3.3 Вигляд програми

Зовнішній вигляд запущених програм представлений на рисунках 3.4 - 3.8.

Рисунок 3.4 Зовнішній вигляд програми A

Рисунок 3.5 Зовнішній вигляд програми D

Рисунок 3.6 Зовнішній вигляд програми E

Рисунок 3.7 Зовнішній вигляд програми C

Рисунок 3.8 Зовнішній вигляд програми B

4. ІНСТРУКЦІЯ КОРИСТУВАЧА

Для роботи з даним програмним комплексом комп'ютер користувача повинен мати такі параметри:

– процесор Pentium-IV 1.0 GHz і вище

– версія операційної системи: Windows 7 і вище

– об'єм оперативної пам'яті: 1 Gb і вище

– монітор з розширенням екрану не менше 1024х800 та передачею кольорів в 32 біт

– об'єм відеопам'яті: не менше 256 Mb

Користувачу доступно п'ять програм. Вони мають такі ж назви, що й назви хостів. Для правильної роботи ці програми повинні знаходитись на одному персональному комп'ютері. Програми запускаються почергово одна за іншою, як вказано на схемі в технічному завданні. Кожна з програм містить підказки для користувача, яким потрібно слідувати для успішного виконання всіх програм.

ВИСНОВКИ

У результаті виконання курсової роботи було спроектовано та розроблено програмний комплекс, що здійснює передачу даних між різними персональними комп'ютерами. Кожна програма комплексу виконує ті задачі, які вимагались індивідуальним завданням.

Під час розробки програмного забезпечення були отримані навички зі створення програм для роботи у мережі Windows на основі потокового та дайтаграмного передавання інформації з використанням поштових скриньок, іменованих каналів та сокетів з використанням синхрон¬ного і асинхронного режимів роботи функцій.

Це дозволило зрозуміти інформаційну структуру протоколів обміну даними, аспекти клієнт-серверної організації програмного забезпечення, основи організації комп'ютерних мереж, аспекти обмеження доступу до ресурсів, аспекти програмування файлів і потоків, аспекти роботи поштових скриньок, аспекти роботи іменованих каналів, принципи організації обміну даними за допомогою інтерфейсу прикладного програмування Winsock, аспекти використання адрес комп'ютерів та портів, види встановлення з'єднань між комп'ютерами та відповідні протоколи, технологію введення-виведення інформації у Winsock, мовні засоби, що застосовуються при створенні прикладних програм для роботи у мережах, переваги та недоліки технологій прикладного програмування у мережах.

Після завершення розробки програмного комплексу було проведено тестування даного комплексу, що дозволило виявити та усунути помилки у розробці та впевнетись у правильності роботи програм.

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

1. Прикладне програмування у комп'ютерних мережах: навчальний посібник / О. Д. Азаров, О. І. Черняк, Л. А. Савицька - Вінниця : ВНТУ, 2016. - 130 с.

2. Олифер Виктор Григорьевич. Компьютерные сети. Принципы, технологии, протоколы: Учебник для вузов. 4-е изд. / В. Г. Олифер, Н. А. Олифер. - СПб.: Питер, 2010. - 944 с. - ISBN 978-5-49807-389-7.

3. Таненбаум Э. Компьютерные сети. 5-е изд. / Э. Таненбаум. - СПб.: Питер, 2012. - 992 с. - ISBN 978-5-459-00342-0

4. Трегубенко, І. Б. Сучасні технології програмування в мережах [Електронний ресурс] / І. Б. Трегубенко, Г. Т. Олійник, О. М. Панаско. - 2-е вид.. - Черкаси : ЧДТУ, 2010. - 175 с.

5. Харт Джонсон М. Системное программирование в среде Windows, 3-е издание. : Пер. с англ. - М. : Издательский дом «Вильямс», 2005. - 592 с. : ил. - Парал. тит. англ.

6. Сучкова, Л.И. Win32 API: основы программирования: учебное пособие/ Л.И. Сучкова; АлтГТУ им. ИИ. Ползунова. -Барнаул, АлтГТУ, 2010. - 138 с, ил.

7. Саймонд Ричард Microsoft Windows API. Справочник системного администратора. Второе издание, дополненное : Пер. с англ./Ричард Саймон - К.: ООО «ТИД «ДС», 2004. - 1216 с.

8. Гальченко В.Г. Лабораторный практикум. Системное программирование в среде WIN32. Создание Windows приложений. Учебное пособие / В.Г.Гальченко. - Томск: Изд. ТПУ, 2009.- 68 с.

9. Давидов В. Visual C++. Разработка Windows-приложений с помощью MFC i API-функций / В. Давидов - Санкт-Петербург: «БХВ-Петербург», 2008. - 576 с.

10. Джонс Э. Программирование в сетях Microsoft Windows. Мастер-класс. / Э. Джонс, Дж. Оланд ; пер. с англ. - Спб. : Питер; М. - 608 с. : ил.

ДОДАТОК

Вихідний код програмного комплексу

Вихідний код програмного комплексу

MailSlot

#include "MailSlot.h"

MailSlot::MailSlot(

wchar_t* _mailSlotName,

HANDLE& _MailSlot,

char _name) :

programName_(_name),

MailSlot_(_MailSlot),

count_(0),

wMailSlotString_(_mailSlotName),

MailSlotString_(wMailSlotString_.begin(), wMailSlotString_.end())

{

}

MailSlot::~MailSlot()

{

}

void MailSlot::sendMessage(char sendBuf[]) const

{

std::cout<<"\nClient of mailslot for sending message to " << programName_;

std::cout << "\nWait when " << programName_ <<" creates server of mailslot...";

do

{

MailSlot_ = CreateFile(MailSlotString_.c_str(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

Sleep(100);

} while (MailSlot_ == INVALID_HANDLE_VALUE);

int kilk = NULL;

std::cout << "\nPress any key for sending message to " << programName_;

_getch();

WriteFile(MailSlot_, sendBuf, strlen(sendBuf), (LPDWORD)&kilk, NULL);

std::cout << "\nMessage was sended to " << programName_;

CloseHandle(MailSlot_);

}

void MailSlot::receiveMessage(char *receiveBuf) const

{

std::cout << "\nServer of mailslot for received message from " << programName_;

HANDLE mailslotBForC;

mailslotBForC = CreateMailslot(MailSlotString_.c_str(), 1024, MAILSLOT_WAIT_FOREVER, NULL);

std::cout << "\nWait for receive message from " << programName_;

while (!ReadFile(mailslotBForC, receiveBuf, 1024, (LPDWORD)&count_, NULL))

Sleep(100);

receiveBuf[count_] = 0;

CloseHandle(mailslotBForC);

}

NamedPipe

#include "NamedPipe.h"

NamedPipe::NamedPipe(

wchar_t* _namedPipeName,

HANDLE& _namedPipe,

char _name) :

programName_(_name),

namedPipe_(_namedPipe),

count_(0),

wNamedPipeString_(_namedPipeName),

namedPipeString_(wNamedPipeString_.begin(), wNamedPipeString_.end())

{

}

NamedPipe::~NamedPipe()

{

}

void NamedPipe::sendMessage(char sendBuffer_[]) const

{

std::cout << "\nServer of named pipe for sending message to " << programName_;

std::cout << "\nWait when " << programName_ << " connects...";

namedPipe_ = CreateNamedPipe(namedPipeString_.c_str(), PIPE_ACCESS_OUTBOUND, PIPE_TYPE_BYTE, 1, 256, 0, 1000, NULL);

while (namedPipe_ != INVALID_HANDLE_VALUE)

{

if (ConnectNamedPipe(namedPipe_, NULL) != FALSE) // wait for someone to connect to the pipe

{

puts("\nConnected.");

break;

}

}

std::cout << "\nPress any key for send message to " << programName_;

_getch();

WriteFile(namedPipe_, sendBuffer_, 1024, (LPDWORD)&count_, NULL);

puts("\nMessage was sended to " + programName_);

DisconnectNamedPipe(namedPipe_);

CloseHandle(namedPipe_);

}

void NamedPipe::receiveMessage(char* outStr) const

{

std::cout << "\nClient of named pipe for receiving message from " << programName_;

std::cout << "\nWait for creating server of named pipe P1 on " << programName_ << "...";

while (!WaitNamedPipe(namedPipeString_.c_str(), NMPWAIT_WAIT_FOREVER))

Sleep(100);

if (namedPipe_ != INVALID_HANDLE_VALUE)

{

namedPipe_ = CreateFile(namedPipeString_.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

puts("\nConnected.");

}

puts("\nWait for receive message...");

ReadFile(namedPipe_, outStr, 1024, (LPDWORD)&count_, NULL);

outStr[count_] = 0;

CloseHandle(namedPipe_);

}

Socket With Connection

#include "WebSocketWithConnection.h"

WebSocketWithConnection::WebSocketWithConnection(

sockaddr_in& _sockaddress,

SOCKET& _socket,

unsigned short _port,

char _name) :

programName_(_name),

port_(_port),

socket_(_socket),

sockaddress_(_sockaddress)

{

}

WebSocketWithConnection::~WebSocketWithConnection()

{

}

void WebSocketWithConnection::sendMessage(char sendBuf[]) const

{

int result_;

WSADATA wsaData_;

result_ = WSAStartup(0x0202, &wsaData_);

if (result_ != NO_ERROR)

{

wprintf(L"WSAStartup failed with error: %d\n", result_);

}

socket_ = socket(AF_INET, SOCK_DGRAM, 0);

sockaddress_.sin_family = AF_INET;

sockaddress_.sin_port = htons(port_);

long adr1;

inet_pton(AF_INET, "127.0.0.1", &adr1);

sockaddress_.sin_addr.S_un.S_addr = adr1;

std::cout << "\nClient of sockets with connection for sending message to " << programName_;

socket_ = socket(AF_INET, SOCK_STREAM, 0);

if (socket_ == INVALID_SOCKET)

{

wprintf(L"socket failed with error: %ld\n", WSAGetLastError());

WSACleanup();

}

std::cout << "\nWait for connecting to " << programName_ << "....";

while (connect(socket_, (sockaddr*)&sockaddress_, sizeof(sockaddress_)) == SOCKET_ERROR)

Sleep(100);

std::cout << "\nConnected to " << programName_;

std::cout << "\nPress any key for send message to " << programName_;

_getch();

send(socket_, sendBuf, strlen(sendBuf), 0);

std::cout << "\nMessage was sended to " << programName_;

closesocket(socket_);

}

void WebSocketWithConnection::receiveMessage(char* receiveBuf) const

{

std::cout << "\nServer of socket with connection for receiving message from " << programName_;

WSADATA WsaData;

SOCKET localSock;

sockaddr_in localAddr;

int count;

int res = WSAStartup(0x0202, &WsaData);

if (res != NO_ERROR)

{

wprintf(L"WSAStartup failed with error: %d\n", res);

}

localSock = socket(AF_INET, SOCK_STREAM, 0);

localAddr.sin_family = AF_INET;

localAddr.sin_port = htons(port_);

localAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

bind(localSock, (sockaddr*)&localAddr, sizeof(localAddr));

sockaddress_.sin_family = AF_INET;

sockaddress_.sin_port = htons(port_);

sockaddress_.sin_addr.S_un.S_addr = htonl(INADDR_LOOPBACK);

listen(localSock, 8);

int addrLen = sizeof(sockaddress_);

puts("\nWait for accept...");

std::cout << "\nWait for accept " << programName_ << ".....";

socket_ = accept(localSock, (sockaddr*)&sockaddress_, &addrLen);

std::cout << "\nAccepted " << programName_ << ".";

std::cout << "\nWait for receive message from " << programName_ << ".....";

count = recv(socket_, receiveBuf, 1024, 0);

receiveBuf[count] = 0;

std::cout << "\nMessage from " << programName_ << " was received!";

shutdown(socket_, SD_BOTH);

closesocket(socket_);

}

Socket Without Connection

#include "WebSocketWithoutConnect.h"

WebSocketWithoutConnect::WebSocketWithoutConnect(

sockaddr_in& _sockaddress,

SOCKET& _socket,

unsigned short _port,

char _name) :

programName_(_name),

port_(_port),

socket_(_socket),

sockaddress_(_sockaddress)

{

}

WebSocketWithoutConnect::~WebSocketWithoutConnect()

{

}

void WebSocketWithoutConnect::sendMessage(char sendBuf[]) const

{

int result_;

std::cout << "\nSocket without connection for sending message to " << programName_;

WSADATA wsaData_;

result_ = WSAStartup(0x0202, &wsaData_);

if (result_ != NO_ERROR)

{

wprintf(L"WSAStartup failed with error: %d\n", result_);

}

socket_ = socket(AF_INET, SOCK_DGRAM, 0);

if (socket_ == INVALID_SOCKET) {

wprintf(L"socket failed with error: %ld\n", WSAGetLastError());

WSACleanup();

}

sockaddress_.sin_family = AF_INET;

sockaddress_.sin_port = htons(port_);

long adr1;

inet_pton(AF_INET, "127.0.0.1", &adr1);

sockaddress_.sin_addr.S_un.S_addr = adr1;

std::cout << "\nIf " << programName_ << " is waiting for receiving, press any key for send message";

_getch();

result_ = sendto(socket_, sendBuf, strlen(sendBuf), 0, (sockaddr*)&sockaddress_, sizeof(sockaddress_));

if (result_ == SOCKET_ERROR) {

wprintf(L"sendto failed with error: %d\n", WSAGetLastError());

closesocket(socket_);

WSACleanup();

}

std::cout << "\nMessage was sended to " << programName_;

closesocket(socket_);

}

void WebSocketWithoutConnect::receiveMessage(char* receiveBuf) const

{

WSADATA wsaData;

int count;

int isrecive = WSAStartup(0x0202, &wsaData);

if (isrecive != NO_ERROR)

{

wprintf(L"WSAStartup failed with error: %d\n", isrecive);

}

std::cout << "\nSocket without connection for receive message from " << programName_;

sockaddress_.sin_port = htons(port_);

sockaddress_.sin_family = AF_INET;

sockaddress_.sin_addr.S_un.S_addr = htonl(INADDR_LOOPBACK);

socket_ = socket(AF_INET, SOCK_DGRAM, NULL);

if (socket_ == INVALID_SOCKET)

{

wprintf(L"socket failed with error: %ld\n", WSAGetLastError());

WSACleanup();

}

bind(socket_, (sockaddr*)&sockaddress_, sizeof(sockaddress_));

count = recv(socket_, receiveBuf, 1024, 0);

receiveBuf[count] = 0;

}

Програма А

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>

#include "WebSocketWithoutConnect.h"

void init(char* sendBuf)

{

size_t count;

puts("Input text:");

_cgets_s(sendBuf, (size_t)256, (size_t*)(&count));

}

int main()

{

WebSocketWithoutConnect* wss_;

sockaddr_in sockAddr_;

SOCKET s_, ss_;

char sendBuf[1024];

init(sendBuf);

wss_ = new WebSocketWithoutConnect(sockAddr_, ss_, 5002, 'C');

wss_->sendMessage(sendBuf);

}

Програма В

#include <iostream>

#include "NamedPipe.h"

int main()

{

HANDLE h_;

NamedPipe* namedPipe_;

wchar_t namePipeName[] = L"\\\\.\\Pipe\\pipeEB1";

char receiveBuf[1024];

namedPipe_ = new NamedPipe(namePipeName, h_, 'E');

namedPipe_->receiveMessage(receiveBuf);

FILE* f;

fopen_s(&f, "FromE.txt", "w");

fputs(receiveBuf, f);

fclose(f);

}

Програма С

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>

#include "MailSlot.h"

#include "WebSocketWithoutConnect.h"

void init(char* buf)

{

puts("Input the message:");

gets_s(buf, 512);

FILE* f;

fopen_s(&f, "FromC.txt", "r");

char buf1[512];

fgets(buf1, 512, f);

fclose(f);

strcat(buf, " ");

strcat(buf, buf1);

puts("Message for send:");

puts(buf);

}

int main()

{

HANDLE h_, m_;

MailSlot* mailSlot_;

wchar_t nameMailSlot[] = L"\\\\.\\Mailslot\\Mailslot";

WebSocketWithoutConnect* ws_;

sockaddr_in sockAddr_, wssSockAddr_;

SOCKET s_, ss_;

char sendBuf[1024];

char receiveBuf[1024];

init(sendBuf);

mailSlot_ = new MailSlot(nameMailSlot, m_, 'D');

mailSlot_->receiveMessage(receiveBuf);

std::cout << "Received Message:" << receiveBuf;

mailSlot_->sendMessage(sendBuf);

ws_ = new WebSocketWithoutConnect(sockAddr_, s_, 6100, 'E');

ws_->sendMessage(sendBuf);

ws_ = new WebSocketWithoutConnect(sockAddr_, s_, 6101, 'E');

ws_->receiveMessage(receiveBuf);

std::cout << "\nMessage Received: " << receiveBuf;

_getch();

}

Програма Д

#include <iostream>

#include "MailSlot.h"

void init(char* sendbuf) {

FILE* f;

char* buf1 = new char[512];

fopen_s(&f, "FromD1.txt", "r");

fgets(sendbuf, 127, f);

fclose(f);

fopen_s(&f, "FromD2.txt", "r");

fgets(buf1, 512, f);

fclose(f);

strcat(sendbuf, buf1);

delete[]buf1;

}

int main()

{

HANDLE h_, m_;

MailSlot* mailSlot_;

wchar_t nameMailSlot[] = L"\\\\.\\Mailslot\\Mailslot";

char sendBuf[1024];

char receiveBuf[1024];

init(sendBuf);

mailSlot_ = new MailSlot(nameMailSlot, m_, 'C');

mailSlot_->sendMessage(sendBuf);

}

Програма Е

#include <iostream>

#include "NamedPipe.h"

#include "WebSocketWithConnection.h"

void init(char* sendBuf)

{

char buf1[512];

size_t count;

FILE* f;

fopen_s(&f, "FromE.txt", "r");

fgets(sendBuf, 512, f);

fclose(f);

puts("Input text:");

_cgets_s(buf1, (size_t)512, (size_t*)(&count));

strcat(sendBuf, buf1);

puts("Message for send:");

}

int main()

{

HANDLE m_;

wchar_t name[] = L"\\\\.\\Pipe\\pipeEB1";

WebSocketWithConnection* wss_;

NamedPipe* nP_;

sockaddr_in sockAddr_, wssSockAddr_;

SOCKET ss_;

char sendBuf[1024];

char receiveBuf[1024];

init(sendBuf);

nP_ = new NamedPipe(name, m_, 'B');

nP_->sendMessage(sendBuf);

wss_ = new WebSocketWithConnection(wssSockAddr_, ss_, 5001, 'A');

wss_->sendMessage(sendBuf);

}

Размещено на Allbest.ru

...

Подобные документы

  • Аналіз сучасного стану технологій програмування. Засоби реалізації об'єктів в мові C++, структура даних і функцій. Розробка програмного продукту - гри "трикутники", з використовуванням моделей, класів і функцій об’єктно-орієнтованого програмування.

    курсовая работа [117,8 K], добавлен 14.03.2013

  • Переваги архітектури "клієнт-сервер", порівняльна характеристика програмних засобів розробки його систем. Основні концепції функціонування системи IP-телебачення на базі архітектури "клієнт-сервер". Механізм взаємодії клієнта і сервера в середі Delphi.

    реферат [955,9 K], добавлен 30.01.2010

  • Загальна характеристика підприємства "Focus". Огляд програмного забезпечення для створення комп’ютерної мережі. Вибір мережевої служби та протоколів, архітектури, кабелю. Розрахунок обсягу даних, мінімальної конфігурації для серверів та робочих станцій.

    курсовая работа [600,9 K], добавлен 20.05.2015

  • Розробка бази даних для меблевої фірми. Обстеження і аналіз предметної області та побудова концептуальної, логічної та фізичної моделі цієї бази даних. Використання мови програмування Visual Basic при написанні програмного коду, що обслуговує базу даних.

    курсовая работа [1,4 M], добавлен 24.10.2010

  • Характеристика функціональної структури предметної області програмного комплексу. Розробка архітектури програмної системи. Вибір типу архітектури й зразків проектування. Опис декомпозиції, залежностей та інтерфейсу. Детальне проектування модулів та даних.

    курсовая работа [462,2 K], добавлен 19.12.2013

  • Поняття комп'ютерної мережі як спільного підключення окремих комп’ютерів до єдиного каналу передачі даних. Сутність мережі однорангової та з виділеним сервером. Топології локальних мереж. Схема взаємодії комп'ютерів. Проблеми передачі даних у мережі.

    курсовая работа [605,0 K], добавлен 06.05.2015

  • Реалізація, за допомогою технології Windows Forms, програми обліку даних про волонтерів та подій, на які вони зареєстровані. можливості об'єктно-орієнтованого програмування. Створення класів. Методи, властивості. Використання Multiple Document Interface.

    курсовая работа [1,5 M], добавлен 02.12.2015

  • Загальна характеристика розвитку електронної торгівлі в Україні на сучасному етапі. Сутність і переваги клієнт-серверної технології, вибір мови програмування. Розробка структури бази даних та веб-сервера MySQL 4.1.8 для прийому замовлень в режимі online.

    дипломная работа [2,5 M], добавлен 24.09.2012

  • Комбінація методів ринкового регулювання, заснованих на зворотних зв'язках. Аналіз методологій розробки програмного забезпечення. Порівняльний аналіз програмних технологій. Вибір технології доступу до даних. Компонент взаємодії адмінчастини з базою даних.

    дипломная работа [3,0 M], добавлен 02.02.2013

  • Соціальні медіа, їх функціональні особливості та напрямки вивчення. Вибір мови програмування та загальна структура програми, вимоги до неї, аналіз і зберігання отриманих даних. Розробка моделі поведінки у соціальних медіа, оцінка кількості користувачів.

    дипломная работа [2,0 M], добавлен 18.04.2015

  • Опис мови програмування PHP. Стратегія Open Source. Мова розмітки гіпертекстових документів HTML. Бази даних MySQL. Обґрунтування потреби віддаленого доступу до БД. Веб-сервер Apache. Реалізація системи. Інструкція користувача і введення в експлуатацію.

    курсовая работа [42,9 K], добавлен 21.12.2012

  • Принципи організації баз даних (БД) при проектуванні клієнт-серверних додатків. Інструментальні засоби створення системи. Різновиди архітектур БД. Функції та програмна реалізація. Економічне обґрунтування доцільності розробки програмного продукту.

    дипломная работа [2,1 M], добавлен 22.10.2012

  • Сучасні тенденції у галузі розподілених систем виявлення комп’ютерних атак. Обґрунтування вибору програмного середовища та мови програмування для розробки підсистеми. Розробка узгодженого інтерфейсу взаємодії користувача з підсистемою, візуалізації даних.

    дипломная работа [2,4 M], добавлен 16.07.2014

  • Аналіз мережевих протоколів та їх основних параметрів. Описання алгоритму розв’язання задач написання мережевих програм, та реалізація їх на базі Winsock. Створення простого чату для передачі повідомлень користувачів, на основі протоколів IEEE та ISO.

    курсовая работа [86,1 K], добавлен 17.06.2015

  • Аналіз параметрів та характеристик аудіо та відео кодеків. Аналіз параметрів протоколів сигналізації медіатрафіку та мережного рівня медіа систем. Вербальні моделі взаємодії відкритих систем. Математичні моделі процесів інкапсуляції та передачі даних.

    курсовая работа [573,9 K], добавлен 22.03.2015

  • Проектування інформаційної системи для супроводу баз даних. Моделі запиту даних співробітником автоінспекції та обробки запиту про машини та їх власників. База даних за допомогою SQL-сервер. Реалізація запитів, процедур, тригерів і представлення.

    курсовая работа [1,7 M], добавлен 18.06.2012

  • Концепції об'єктно-орієнтованого програмування. Методи створення класів. Доступ до методів базового класу. Структура даних, функції. Розробка додатку на основі діалогових вікон, програми меню. Засоби розробки програмного забезпечення мовами Java та С++.

    курсовая работа [502,5 K], добавлен 01.04.2016

  • Дослідження призначення та видів мережевих технологій - погодженого набору стандартних протоколів та програмно-апаратних засобів, достатнього для побудови локальної обчислювальної мережі. Комбінування архітектури комутаційної матриці й загальної шини.

    реферат [523,1 K], добавлен 18.02.2011

  • Принципи об'єктно-орієнтованого підходу. Розробка програмного комплексу з використанням цього алгоритму і користувальницьких класів на мові програмування С++. Реалізація простого відкритого успадкування. Тестування працездатності системи класів.

    курсовая работа [98,0 K], добавлен 06.05.2014

  • Аналіз об'єктів дослідження, проектування баз даних. Розробка програмного забезпечення для роботи зі спроектованою базою даних. Реалізація індексів, опис метаданих в середовищі MySQL. Специфікація DDL для MySQL, протокол тестування DDL-сценарії.

    контрольная работа [389,9 K], добавлен 05.01.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.