49816 (Розвиток сучасних структур програмного забезпечення), страница 2

2016-07-30СтудИзба

Описание файла

Документ из архива "Розвиток сучасних структур програмного забезпечення", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "49816"

Текст 2 страницы из документа "49816"

Параметр buf (out) – буфер даних.

Параметр len (in) – величина буферу вхідних даних даних, в байтах.

Параметр flags (in) – спеціальний флаг, який можна встановити в нуль.

Функція, в разі успіху, повертає кількість прийнятих байт. Інакше – код помилки.

Після виконання операцій з’єднання можна закрити. Для цього існує наступна функція:

int shutdown(

SOCKET s,

int how

);

Параметр s (in) – сокет.

Параметр how (in) – можна виставити в SD_BOTH. Інші значення розглядати не будемо.

Функція в разі успіху повертає нуль. В іншому разі – код помилки.

І вкінці кінців, потрібно закрити сокет. Це робить функція:

int closesocket(

SOCKET s

);

Єдиний вхідний параметр s – сокет, який треба закрити.

Функція в разі успіху повертає нуль. В іншому разі – код помилки.

Зі сторони клієнта необхідно також виконати три перших етапи. Після завантаження бібліотеки, створення сокету та заповнення даними структури, що асоціюється із сонетом, клієнт повинен з’єднатися з сервером. З’єднання відбувається за допомогою функції:

int connect(

SOCKET s,

const struct sockaddr* name,

int namelen

);

Функція приймає вхідні параметри:

Параметр s (in) – сокет, через який клієнт з’єднується з сервером.

Параметр name (in) – ім’я сокету, вказаного в структурі sockaddr, до якого буде під’єднуватися клієнт.

Параметр namelen (in) – розмір структури, в байтах.

Після з‘єднання клієнт може відправляти серверу інструкції (дані). Функція, що здійснює цю операцію, має прототип:

int send(

SOCKET s,

const char* buf,

int len,

int flags

);

Параметри мають такі ж значення, як і в раніше розглянутій функції recv.

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

Після завершення всіх операцій з’єднання і сокет потрібно закрити. Ці функції я вже розглядав вище.

Було б доцільно згадати про те, що всі вищенаведені функції працюють із першої версії бібліотеки. Але можуть бути використані і в наступних версіях, так як підтримуються розробниками. В другій версії можна використовувати більш «продвинуті» функції, які мають більші можливості. Ці функції відрізняються приставкою WSA та кількістю параметрів.

4. Технічні засоби, що використовуються у програмі

Для коректної роботи програми необхідна наступна конфігурація хоча б двох комп’ютерів :

  1. Процесор - довільний.

  2. Жорсткий диск більше 2 Гбайт.

  3. Тип монітору - позамовчуванню.

  4. Розширення екрана , 32-бітна палітра кольорів(клієнт частина).

  5. Об’єм оперативної пам’яті - 64MB.

  6. Наявність клавіатури , миші, CDROM.

  7. Зєднання по локальній або глобальній мережі.

  8. OS: Windows XP, Windows 2000, , Windows 98, Windows7.


5. Виклик та завантаження програми

Щоб викликати дану програму необхідно встановити клієнтську частину на одно із комп’ютерів, та серверну частину на іншому. Дізнатись IP адресу чи LAN нажавши «властивості» на мережеве зєднання, або набравши команду ipconfig в «запуск програм».

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

Клієнтська програма завантажується відповідно до потреб користувача, та зв’язується в подальшому із сервером через апаратні пристрої.

6. Вхідні і вихідні дані

Вхідними даними є адреса сервера та вибір відправлення одного із текстових повідомлень на сервер:

  • Opencdrom

  • Closecdrom

  • Monitorpoweroff

  • Monitorpoweron

  • Lockworkstation

  • Logoff

  • Reboot

  • Poweroff

  • Minimizewindow

  • Hidewindow

  • Lockwindow

  • Swaplefttoright

  • Swaptonormal

  • Messagebox

Вихідним результатом ми отримаємо дію яка буде відбуватись безпосередньо на сервері

7. Розробка структури програми

Клієнтська частина:

int Done()// передання Сокету

BOOL CALLBACK Proc(HWND, UINT, WPARAM, LPARAM); // звертання до головного вікна

BOOL CALLBACK DlgProc1(HWND hdWnd,UINT mes,WPARAM wParam,LPARAM lParam); //Звертання до вікна "Про програму"

INT APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, INT) //точка входу в програму

Серверна частина:

DWORD APIENTRY ClientThread(LPVOID);//прийняття повідомлення

DWORD APIENTRY NetThread(LPVOID);//прийняття сокетаь

INT APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, INT) //Main прграми

VOID OpenCDROM();//відкриття CDROm

VOID CloseCDROM();//закриття CDROM

VOID AutoRun();//додавання програми до авторану

VOID WindowsExit(UINT); //вимкнення компютера


8 Інструкція для користувача

Для того щоб працювати з даним проектом потрібно:

  • Запустити серверну програму на одному з комп’ютерівж

  • Запустити клієнтську програму на іншому комп’ютері, після чого виконати такі дії:

Ввести в поле айпі сервера:

(рис. 8.1).

Вибрати команду із поданих нам варіантів та напис тнути кнопку «виконати»:

Висновки

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

Будь яка галузь може використовувати дану програму, у різних для неї цілях, чи то передачі інформації із подальшим її опрацюванням, чи то передача простих сигналів, від яких залежатиме та чи інша дія «системи». До цієї задачі зводиться велика кількість продуктів, що мають подібних характер, адже саме в них вбудована базова комплекція передавання та отримання сокетів.

У цій курсовій задачі ми розглянули програму віддаленого керування, розглянувши основні її положення, методи реалізації, та саму структуро мережевого програмування.

Список літератури:

  1. Информационний сервер для програмистов http://sources.ru/cpp/faqs/46.htm : Сетевое программирование. Режим доступа: : http://sources.ru/index.html– Загл. с экрана.

  2. WinMain - application entry point http://www.toymaker.info/Games/html/winmain.html. WinMain definition. Режим доступа http://www.toymaker.info/

  3. Передача даних по мережі Сокети http://winmaster.org.ua/2009-05-05-13-26-39.html . Програмування під Win 32 на C++. Режим доступу http://winmaster.org.ua/

4.100 команд из командной строки. http://research.sputtv.com/news/1401.html. «Полезно | Интересно». Режим доступа http://research.sputtv.com/

5. Матеріал з Вікіпедії — вільної енциклопедії. http://uk.wikipedia.org/wiki/TCP/IP Вільна енциклопедія. Режим доступу http://uk.wikipedia.org/

6.Windows Programming : windows.h and winsock.h in visual С++ http://www.cplusplus.com/forum/windows/3224/ . Сplusplus. Режим доступу http://www.cplusplus.com

  1. Практичний посібник по створенню та роботі з WEB-сторінками та WEB-Mail скриньками в мережі INTERNET із дисципліни «Інформатика та комп’ютерна техніка» для студентів спеціальності 6104, 05 денної форми навчання / Укл.: Т.О.Кучерява, О.Ф.Клименко. — К.: КНЕУ, 2001. — 40 с.

  2. Сети WINDOWS NT 4.0 / Д.Д.Пули и др.; Пер. с англ. — Л.: ВНУ, 1997. — 798 с.

  3. Прангишвили И. В. Микропроцессоры и локальные сети ПЭВМ в распределенных системах управления. — М.: Энергоатомиздат, 1995. — 272 с.

Додатки

Додаток А Блок схема сервера та клієнта:

Додаток Б Лістинг програми

Клієнт:

#include

#include "resource.h"

#include

#pragma comment (lib, "ws2_32.lib")

static HWND hWndDlg;//ідентифікатор доступу вікна API

int Done();//обявлення функції Done

BOOL CALLBACK Proc(HWND, UINT, WPARAM, LPARAM); //Звертання до головного вікна

BOOL CALLBACK DlgProc1(HWND hdWnd,UINT mes,WPARAM wParam,LPARAM lParam); //Звертання до вікна "Про програму"

HINSTANCE hInstExe;

INT APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, INT) //точка входу в програму

{

WSADATA wsd;

if (WSAStartup(MAKEWORD(2,2), &wsd) != 0)

return -1;

HANDLE hThread;

DWORD dwThreadID;

hInstExe = hInstance;

DialogBox(hInstance, (LPSTR)IDD_DIALOG1, NULL, (DLGPROC)Proc);

return 0;

}

char szMessage[255];//Повідомлення Серверу

char szServerName[255];//Адреса Серверу

BOOL CALLBACK Proc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)//опрацювання діалогового вікна 1

{

HANDLE hThread;

DWORD dwThreadID;

HICON hIcon;

switch(uMsg)

{

case WM_INITDIALOG:

break;

case WM_COMMAND://виконування команд із форми 1

switch (wParam)

{

case IDC_BUTTON1:

DialogBox(hInstExe, MAKEINTRESOURCE(IDD_DIALOGBAR), hWndDlg, DlgProc1);

break;

case IDC_DONE:

GetDlgItemText (hWndDlg,IDC_HOST,szServerName,256);

Done();

MessageBeep(48);

break;

case IDC_RADIO1:

strcpy(szMessage, "opencdrom");MessageBeep(48);

break;

case IDC_RADIO2:

strcpy(szMessage, "closecdrom");MessageBeep(48);

break;

case IDC_RADIO3:

strcpy(szMessage, "monitorpoweroff");MessageBeep(48);

break;

case IDC_RADIO4:

strcpy(szMessage, "monitorpoweron");MessageBeep(48);

break;

case IDC_RADIO5:

strcpy(szMessage, "lockworkstation");MessageBeep(48);

break;

case IDC_RADIO6:

strcpy(szMessage, "logoff");MessageBeep(48);

break;

case IDC_RADIO7:

strcpy(szMessage, "reboot");MessageBeep(48);

break;

case IDC_RADIO8:

strcpy(szMessage, "poweroff");MessageBeep(48);

break;

case IDC_RADIO9:

strcpy(szMessage, "minimizewindow");MessageBeep(48);

break;

case IDC_RADIO10:

strcpy(szMessage, "hidewindow");MessageBeep(48);

break;

case IDC_RADIO11:

strcpy(szMessage, "lockwindow");MessageBeep(48);

break;

case IDC_RADIO12:

strcpy(szMessage, "swaplefttoright");MessageBeep(48);

break;

case IDC_RADIO13:

strcpy(szMessage, "swaptonormal");MessageBeep(48);

break;

case IDC_RADIO14:

strcpy(szMessage, "messagebox");MessageBeep(48);

break;

}

break;

case WM_CLOSE:

EndDialog(hWndDlg,0);

break;

}

return FALSE;

}

BOOL CALLBACK DlgProc1(HWND hdWnd, UINT mes, WPARAM wParam, LPARAM lParam)//опрацювання діалогового вікна 2

{

switch(mes)

{

case WM_COMMAND://виконування команд із форми 2

{

switch(LOWORD(wParam))

{

case IDC_BUTTON2: {

EndDialog(hdWnd,0);

break;

}

}

}

default:

return DefWindowProc(hdWnd, mes, wParam+10, lParam+10);

}

return 1;

}

int Done()//функція із опрацюванням сокетів

{

SOCKETsClient;

intret;

sockaddr_in server;

hostent*host = NULL;

sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if (sClient == INVALID_SOCKET)

{

MessageBox(0, "Неможливе створення сокета", "Error", 0);

return 1;

}

server.sin_family = AF_INET;

server.sin_port = htons(5050);

server.sin_addr.s_addr = inet_addr(szServerName);

if (server.sin_addr.s_addr == INADDR_NONE)

{

host = gethostbyname(szServerName);

if (host == NULL)

{

MessageBox(0, "Звязок із сервером був втрачений", "Error", 0);

return 1;

}

CopyMemory(&server.sin_addr, host->h_addr_list[0],

host->h_length);

}

if (connect(sClient, (struct sockaddr *)&server,

sizeof(server)) == SOCKET_ERROR)

{

MessageBox(0, "Не вдається зєднатись із сервером", "Error", 0);

return 1;

}

ret = send(sClient, szMessage, strlen(szMessage), 0);

if (ret == SOCKET_ERROR)

MessageBox(0, "Операція надсилання сокета перервана", "Error", 0);

Sleep(1000);

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5120
Авторов
на СтудИзбе
444
Средний доход
с одного платного файла
Обучение Подробнее