Методичні вказівки до виконання лабораторних робіт з дисципліни “Комп’ютерні мережі”, страница 3

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 Лабораторна робота “Міжмашинна взаємодія”

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

Для організації міжмашинної взаємодії побудуємо клієнт-серверний додаток, який буде складатися з клієнтської і серверної частин. Працювати він зможе як у межах одного, так і двох комп'ютерів. З'єднання між клієнтською і серверною частинами буде відбуватися за протоколом TCP/IP. Якщо у вас тільки один комп'ютер, то за адресу сервера клієнт може взяти адресу 127.0.0.1. Ця адреса завжди показує на свій комп'ютер, що зручно при налагодженні мережних додатків.

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

Виберемо тип проекту Visual C++ | MFC | MFC Application, дамо проекту ім’я Serv, і виберемо тип додатка Dialog based. На кроці Advanced Features включимо підтримку Windows Sockets. Елементи Use Unicode libraries, About box, ActiveX Controls і Common Control Manifest можна відключити.