Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
22
Добавлен:
19.04.2015
Размер:
205.31 Кб
Скачать

Міністерство освіти і науки України

Сумський державний університет

Методичні вказівки

ДО ВИКОНАННЯ ЛАБОРАТОРНИХ РОБІТ

3 Дисципліни “комп’ютерні мережі”

ДЛЯ СТУДЕНТІВ НАПРЯМУ ПІДГОТОВКИ 0802

ДЕННОЇ ФОРМИ НАВЧАННЯ

Суми

Видавництво СумДУ

2010

Методичні вказівки до виконання лабораторних робіт з дисципліни “Комп’ютерні мережі” /Укладач М.С.Бабій. – Суми: Вид-во СумДУ, 2010. – 24с.

Кафедра інформатики

ЗМІСТ

C.

1 Лабораторна робота “Обробка мережних файлів” . . 4

2 Лабораторна робота “Перелік мережних ресурсів”. . 11

3 Лабораторна робота “Міжмашинна взаємодія” . . . 15

3.1 Побудова сервера . . . . . . . . . . . . . . . . . . 15

3.2 Побудова клієнта . . . . . . . . . . . . . . . . . . 20

СПИСОК ЛІТЕРАТУРИ . . . . . . . . . . . . . . . . . 23

1 Лабораторна робота “Обробка мережних файлів”

Мережні функції Win32 API мають префікс Wnet. Для доступу до мережних ресурсів у середовищі Delphi можна використовувати такі функції.

DWORD WnetAddConnection (LPCSTR lpRemoteName, LPCSTR lpPassword, LPCSTR lpLocalName)– підключення до мережного ресурсу. Тут lpRemoteName – мережне ім'я пристрою, lpPassword - пароль, lpLocalName – локальне ім'я пристрою.

DWORD WnetCancelConnection (LPCSTR lpName, BOOL fForce) – розрив з'єднання. Тут lpLocalName – локальне ім'я пристрою, аргумент fForce встановлює можливість розриву з'єднання при відкритих файлах.

DWORD WnetGetConnection (LPCSTR lpLocalName, LPSTR lpRemoteName, LPDWORD lpLength ) – одержання імені мережного ресурсу за локальним іменем.

DWORD WnetConnectionDialog (HWND hwnd, DWORD dwType) – виводить на екран діалогове вікно для установки з'єднання. Тут hwnd – дескриптор вікна для підключення ресурсу, dwType – тип ресурсу. Для dwType можливі такі значення: RESOURCETYPE_ANY = 0 – будь-який ресурс, RESOURCETYPE_DISK = 1 – диск, RESOURCETYPE_PRINT = 2 – принтер.

DWORD WnetDisconnectDialog (HWND hwnd)– виводить на екран діалогове вікно для розриву з'єднання.

Наведемо приклад роботи з мережним файлом.

Нехай на віддаленому комп'ютері знаходиться файл, який містить прайс-лист товарів, що є в наявності на складі. Кожен запис файла містить найменування товару, кількість і ціну. Як приклад обробки файла розглянемо задачу пошуку в ньому записів, найменування товару в яких починається із символа “D”.

Для розв’язання будемо використовувати Visual C++ середовища Microsoft Visual Studio 2008. Виберемо тип проекту Visual C++ | MFC | MFC Application, дамо проекту ім’я Netf, і виберемо тип додатка Dialog based. Елементи Use Unicode libraries, About box, ActiveX Controls і Common Control Manifest можна відключити. Щоб одержати доступ до бібліотеки мережних функцій додамо в файл NetfDlg.h директиву

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

Розмістимо в діалоговому вікні п’ять кнопок з заголовками: Connect disk (підключити диск), Create file (створити файл), Processing (обробка), Output file (вивести файл), Disconnect disk (відключити диск) і список List Box, інші елементи керування видалимо.

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

За допомогою пункту контекстного меню Add Event Handler додамо в клас CNetfDlg оброблювачі повідомлень BN_CLICKED від наших п’яти кнопок. Далі пунктом Add Variable контекстного меню елемента List Box додамо до класу ім’я цього елемента lb. Для зручності створення файла доцільно додати до проекту допоміжне діалогове вікно.

Для цього в контекстному меню елемента Dialog вікна Resource View виберемо пункт Insert Dialog і помістимо в нове діалогове вікно три елементи Edit Control і кнопку з заголовком Add record (додати запис).

Пунктом контекстного меню діалогового вікна Add Class створимо на основі базового класу CDialog новий клас CDialog1, а пунктом Add Variable контекстного меню елементів Edit Control додамо до класу імена цих елементів: ed1, ed2 і ed3.

Для того, щоб клас CDialog1 був відомий у функціях головного діалогового вікна, додамо в файл NetfDlg.cpp директиву

#include “Dialog1.h” .

Функції обробки повідомлень від елементів керування головного діалогового вікна можуть бути, наприклад, такими. Для роботи з файлом тут використовється клас CFile.

void CNetfDlg::OnBnClickedButton1()

{

WNetConnectionDialog(0,RESOURCETYPE_DISK);

}

void CNetfDlg::OnBnClickedButton2()

{

CDialog1 dlg;

CFile myFile;

myFile.Open("Z:\\ g.lst", CFile::modeCreate |

CFile::modeReadWrite);

myFile.Close();

dlg.DoModal();

}

void CNetfDlg::OnBnClickedButton3()

{

struct SZ { char name[10];

int amount;

double price; } sz;

CFile myFile, myFile1;

UINT nread;

myFile.Open("Z:\\ g.lst", CFile::modeRead);

myFile1.Open("Z:\\ g1.lst",

CFile::modeCreate | CFile::modeWrite);

while (true) {

nread=myFile.Read(&sz,sizeof(SZ));

if (nread!=sizeof(SZ)) break;

if (sz.name[0]=='D')

myFile1.Write(&sz,sizeof(SZ));

}

myFile.Close();

myFile1.Close();

}

void CNetfDlg::OnBnClickedButton4()

{

struct SZ { char name[10];

int amount;

double price; } sz;

CString str;

CFile myFile;

UINT nread;

myFile.Open("Z:\\ g.lst", CFile::modeRead);

while (true) {

nread=myFile.Read(&sz,sizeof(SZ));

if (nread!=sizeof(SZ)) break;

str.Format("%s %3i %6.2f",

sz.name, sz.amount, sz.price);

lb.AddString(str);

}

myFile.Close();

}

void CNetfDlg::OnBnClickedButton5()

{

WNetDisconnectDialog(0,RESOURCETYPE_DISK);

}

Функція обробки для кнопки Add record можt бути такою.

void CDialog1::OnBnClickedButton1()

{

struct SZ { char name[10];

int amount;

double price; } sz;

char s2[15];

ed1.GetWindowText(sz.name,15);

ed2.GetWindowText(s2,15);

sz.amount =atoi(s2);

ed3.GetWindowText(s2,15);

sz.price = atof(s2);

CFile myFile;

myFile.Open("Z:\\ g.lst", CFile::modeReadWrite);

myFile.SeekToEnd();

myFile.Write(&sz,sizeof(SZ));

myFile.Close();

}

Завдання до лабораторної роботи

Написати програму в середовищі Delphi, яка підтримує такі режими:

а) підключення мережного диска функцією WnetConnectionDialog;

б) cтворення на мережному диску типізованого файла g.lst такого змісту: найменування комп'ютерної техніки – тип char name[10], кількість – тип int, ціна – тип double;

в) обробка файла зідно з варіантом;

г) перегляд файла;

д) вимкнення мережного диска функцією WnetDisconnectDialog.

Варіант 1. Виведення на екран повного найменування дисплея, що має найнижчу ціну. При пошуку враховувати тільки записи, найменування техніки в яких починається зі слова “Monitor”.

Варіант 2. Створення нового файла g1.lst із записів файла g.lst, найменування техніки в яких починається із символа “К”.

Варіант 3. Обчислення загальної ціни комп'ютерних пристроїв, дані про які знаходяться в другому, п'ятому і сьомому записах файла g.lst.

Варіант 4. Дозапис у кінець файла g.lst першого, третього і четвертого записів з цього самого файла.

Варіант 5. Підрахунок загальної кількості одиниць комп'ютерної техніки, інформація про яку зберігається у файлі g.lst.

Варіант 6. Виведення на екран даних з n-ого рядка файла g.lst. Значення n ввести з клавіатури.

Варіант 7. Заміна місцями третього і четвертого записів файла g.lst.

Варіант 8. Заміна у файлі g.lst ціни пристрою “System unit” на нову ціну 950.

Варіант 9. Видалення з файла g.lst останнього запису.

Варіант 10. Створення нового файла g1.lst із записів файла g.lst, взятих у зворотному порядку.

Варіант 11. Пошук у файлі g.lst комп'ютерного пристрою з найбільш високою ціною.

Варіант 12. Визначення загальної вартості комп'ютерної техніки, інформація про яку зберігається у файлі g.lst.

Варіант 13. Пошук у файлі g.lst запису з найменуванням “Scanner” і зменшення кількості, що міститься в записі, на одиницю.

Варіант 14. Створення нового файла g1.lst із записів файла g.lst, найменування техніки в яких починається зі слова “Diskette”.

Варіант 15. Підрахунок кількості записів у файлі g.lst, найменування техніки в яких починається зі слова “Modem”.

2 Лабораторна робота “Перелік мережних ресурсів”

Термін “перелічувати” (enumerate) означає: складати список подібних об’єктів, наприклад, ресурсів сервера. Для переліку мережних ресурсів у середовищі Delphi можна використовувати такі функції Win32 API.

WnetOpenEnum (DWORD dwScope, DWORD dwType, DWORD dwUsage, LPNETRESOURCE lpNetResource, LPHANDLE lphEnum ) – відкриває перелік. Тут dwScope – діапазон переліку, що набуває таких значень: RESOURCE_CONNECTED = 1 – підключені в даний час ресурси, RESOURCE_GLOBALNET = 2 – усі ресурси в мережі, RESOURCE_REMEMBERED = 3 – запам’ятовані з'єднання. Параметри dwType – тип ресурсу, dwUsage – тип використання ресурсу, що набуває значення: 0 – усі ресурси, RESOURCEUSAGE_CONNECTABLE = 1 – підключені безпосередньо, RESOURCEUSAGE_CONTAINER = 2 – контейнери. Параметр lpNetResource – покажчик на запис типу TnetResource, що містить опис контейнера для переліку, для root використовують значення nil. Запис TnetResource має такі поля: dwScope : DWORD – діапазон переліку; dwType : DWORD – тип: диск, принтер або інший пристрій; dwDisplayType : DWORD – тип: домен, сервер або точка розподіленого доступу, dwUsage : DWORD – тип використання: підключений безпосередньо або як контейнер, lpLocalName : LPSTR – локальне ім'я, lpRemoteName : LPSTR - мережне ім'я, lpComment : LPSTR – коментар, lpProvider : LPSTR – мережний провайдер. Параметр lphEnum – дескриптор ресурсу, повертається функцією.

WnetEnumResource (HANDLE hEnum, LPDWORD lpcCount, LPVOID lpBuffer, LPDWORD lpBufferSize ) – виконує перелік. Тут lpCount – кількість входів у списку ресурсів, що знаходяться в буфері; lpBuffer – адреса буфера, lpBufferSize – розмір буфера.

WnetClosreEnum (HANDLE hEnum) – закриває перелік.

Наведемо приклад створення додатка для переліку ресурсів локальної мережі. Ділове вікно буде включати кнопку і List Box для виведення результатів переліку.

Наведемо приклад функції обробки BN_CLICKED для кнопки.

void CEnumDlg::OnBnClickedOk()

{

enumerate (NULL);

}

void CEnumDlg::enumerate (LPNETRESOURCE lpnr)

{

HANDLE hEnum;

DWORD dwResult, dwResultEnum;

DWORD BufferSize=10000;

DWORD Count = 0xFFFFFFFF;

LPNETRESOURCE lpnrLocal;

DWORD i;

dwResult=WNetOpenEnum

(RESOURCE_GLOBALNET,

RESOURCETYPE_ANY, 0, lpnr, &hEnum);

if (dwResult != NO_ERROR) return;

do {

lpnrLocal=(LPNETRESOURCE)GlobalAlloc

(GPTR,BufferSize);

dwResultEnum = WNetEnumResource

(hEnum, &Count, lpnrLocal,

&BufferSize);

if (dwResultEnum == NO_ERROR)

{

for (i=0; i<Count; i++)

{

Lb.AddString

(lpnrLocal[i].lpRemoteName);

if (RESOURCEUSAGE_CONTAINER ==

(lpnrLocal[i].dwUsage &

RESOURCEUSAGE_CONTAINER))

enumerate(&lpnrLocal[i]);

}

}

}

while (dwResultEnum !=

ERROR_NO_MORE_ITEMS);

WNetCloseEnum(hEnum);

}

Нижче наведено вікно з результатами переліку.

Завдання до лабораторної роботи

Написати програму переліку ресурсів для своєї локальної мережі.

Соседние файлы в папке Ободяк 3 курс