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

     int n=m_pConnectSocket.Receive(pBuf, 1024);

     pBuf[n]=NULL;

     m_sData.SetWindowTextA(pBuf);

     UpdateData(FALSE);

}

Тепер залишилося написати код для кнопки Listen. Саме при натисканні на цю кнопку сокет m_pListenSocket починає слухати мережу. Створимо функцію обробки для кнопки і додамо в неї такий код:

void CServDlg::OnListen()

{

      m_pListenSocket.Listen();

}

Написання сервера закінчено.

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

Тепер напишемо  клієнтський додаток. Назвемо проект Clnt і виберемо тип додатка Dialog based. Як і при побудові сервера включимо підтримку Windows Sockets, необов’язкові елементи відключимо.

У діалоговому вікні розмістимо на формі дві кнопки і елемент Еdit. Для кнопок задамо ідентифікатори IDC_CONNECT і IDC_SEND, а для Edit – IDC_DATA. Властивість Caption для кнопок установимо в Connect і Send відповідно. За першою кнопкою наш клієнт буде з'єднуватися із сервером, за другою – відправляти дані, введені користувачем у Edit. Наша форма буде виглядати приблизно так:

Елементу Edit припишемо за допомогою ClassWizard змінну m_sData типу CEdit.

Тепер приступаємо безпосередньо до написання коду. Додамо в наш проект клас CMySocket. Предком цього класу виберемо клас CSocket точно так, як і для серверної частини. Цей клас повинен містити покажчик на діалогове вікно. Для створення такого покажчика додамо відповідну змінну в public-секцію нашого класу:

public:

            CClntDlg* m_pDlg; .

Оскільки ми використовуємо клас CClntDlg, то додамо рядок

  class CClntDlg;

перед оголошенням класу CMySocket.

Як і для серверної частини, додамо в клас CMySocket метод, у якому для змінної m_pDlg буде задаватися конкретне значення:

void CMySocket::SetParentDlg(CClntDlg *pDlg)

{

            m_pDlg=pDlg;

 }

Тепер додамо в файлі ClntDlg.h в діалоговий клас CClntDlg змінну, у якій буде зберігатися екземпляр класу CMySocket:

#include "MySocket.h"

. . .

class CClntDlg : public CDialog

{

public:

                 CMySocket m_pConnectSocket;

Як і для сервера  тут записано відповідний include.

Додамо такий код у метод OnInitDialog класу CClntDlg:

BOOL CClntDlg::OnInitDialog()

{

            . . .

            // TODO: Add extra initialization here

m_pConnectSocket.SetParentDlg(this);

            m_pConnectSocket.Create();

             . . .

}

У цьому коді ми записуємо в змінну m_pDlg класу CMySocket адресу клієнтського діалогового вікна.

Додамо далі код, що буде виконуватися при натисканні на кнопки з заголовками Connect і Send:

void CClntDlg::OnConnect()

{

    m_pConnectSocket.Connect("127.0.0.1", 2000);

}

void CClntDlg::OnSend()

{

                        CHAR str[80];

                        DWORD lstr;

                        UpdateData(TRUE);

                        m_sData.GetWindowText(str,80);

                        lstr=m_sData.GetWindowTextLength();

                        m_pConnectSocket.Send(str, lstr);

}

Написання клієнта закінчено.


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

Основна література

1  Microsoft Corporation. Компьютерные сети. Сертификация Network+: Учебный курс. – М.: Русская редакция, 2002.  – 704с.

2  Олифер В.Г. Компьютерные сети. Принципы, технологии, протоколы. –  СПб.: Питер, 2003. – 864с.

3  Хортон А. Visual C++ 2008. Базовый курс.  –  СПб.: “Диалектика”, 2009. – 1280с.

Література видавництва СумДУ

4  Бабій М.С. Локальні мережі ЕОМ: навчальний   посібник. –  Суми:СумДУ, 1999. – 64с.

5  Методические указания к лабораторным работам “Использование сетевых ресурсов Win95”, “Сетевые функции Win32 API”. – Сумы:СумГУ, 1999. – 23с.


   Навчальне видання

МЕТОДИЧНІ ВКАЗІВКИ

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

3 ДИСЦИПЛІНИ “КОМП’ЮТЕРНІ МЕРЕЖІ”

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

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

Відповідальний за випуск  О.П. Чекалов

Редактор   Н.М. Мажуга

Комп’ютерне верстання   М.С. Бабія

Підписано до друку   26.02.2010,  поз.

Формат 60х84/16. Ум. друк. арк. 1,40. Обл.-вид. арк. 1,12. Тираж  50 пр. Зам. №

Собівартість видання               грн.       к.

Видавець і виготовлювач

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

вул. Римського-Корсакова,2, м. Суми, 40007

Свідоцтво суб’єкта видавничої справи  ДК № 3062 від 17.12.2007.


Зам. №                      Наклад   50                    Друкарня  СумДУ, 2010р.