Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ППуКМ / Labs 1-7 / Лабораторна робота №6.doc
Скачиваний:
15
Добавлен:
18.03.2016
Размер:
303.62 Кб
Скачать
    1. Послідовність операцій для зв'язку потокового сокета

Сервер

Клієнт

// Створити слухаючий сокет

CSocket ListenSock;

// Створити сокет

CSocket Sock;

// Створити об’єкт сокета

ListenSock.Create(nPort);

// Почати прослуховування

ListenSock.Listen();

// Створити об’єкт сокета

Sock.Create();

// Підключити сокет

Sock.Connect(sAddr, nPort);

// Створити новий пустий сокет

CSocket Sock;

// Прийняти з’єднання

ListenSock.Accept (Sock);

// Створити об’єкт файлу

CSocketFile file(&Sock);

// Створити об’єкт файлу

CSocketFile file (&Sock);

//Створити архів

CArchive arIn (&file, CArchive::load);

або

CArchive arOut (&file, CArchive::store);

або обидва

// Створити архів

CArchive arIn (&file, CArchive::load);

або

CArchive arOut (&file, CArchive:: store);

- або обидва

// Використати архів для передачі даних: агIn>>dwValue;

або

arOut>>dwValue;

// Використати архів для передачі даних: агIn>>dwValue;

або

arOut>>dwValue;

  1. Хід виконання роботи

    1. Робота у синхронному режимі з використанням cArchive

Напишемо програму для обміну між клієнтом та сервером у синхронному режимі з використанням CSocket та CArchive:

  1. Створюємо діалогову програму з іменем MFCSocket1 і задаємо режим підтримки сокетів:

  1. Проектуємо вид діалогового вікна:

  1. В класі CMFCSocket1Dlg створюємо дві змінні ListenSock та Sock типу CSocket.

  2. Радіо кнопку «Сервер» робимо груповою (встановлюємо властивість Group)

  3. Створюємо зв’язані змінні:

int iMode для радіокнопки “Сервер”;

CString sAdr для поля введення адреси;

UINT iPort для поля введення порта;

CButton butLsn для кнопки “Слухати”;

CString sSMsg для поля введення повідомлення, що відсилається;

CString sRMsg для статичного поля прийнятого повідомлення.

  1. В функції OnInitDialog() класу CMFCSocket1Dlg пишемо:

iMode=0;

sAdr="loopback";

iPort=4444;

UpdateData(0);

  1. Для радіокнопки “Сервер” створюємо обробник OnSrv() і в ньому пишемо:

void CMFCSocket1Dlg::OnSrv()

{

butLsn.SetWindowText("Слухати");

}

  1. Для радіокнопки “Клієнт” створюємо обробник OnCln() і в ньому пишемо:

void CMFCSocket1Dlg::OnCln()

{

butLsn.SetWindowText("З’єднати");

}

  1. Для кнопки “Слухати” створюємо обробник OnBlsn() і в ньому пишемо:

void CMFCSocket1Dlg::OnBlsn()

{

UpdateData(1);

if(iMode==0)

{

ListenSock.Create(iPort);

ListenSock.Listen();

ListenSock.Accept(Sock);

}

else

{

Sock.Create();

Sock.Connect(sAdr,iPort);

}

}

  1. Для кнопки “Відправити” створюємо обробник OnBSend() і в ньому пишемо:

void CMFCSocket1Dlg::OnBSend()

{

UpdateData(1);

CSocketFile f(&Sock);

CArchive arOut(&f,CArchive::store);

arOut<<sSMsg;

}

  1. Для кнопки “Отримати” створюємо обробник OnBRecv() і в ньому пишемо:

void CMFCSocket1Dlg::OnBRecv()

{

CSocketFile f(&Sock);

CArchive arIn(&f,CArchive::load);

arIn>>sRMsg;

UpdateData(0);

}

  1. Якщо на комп’ютері включено БРАНДМАУЕР, то відключаємо його.

  2. Запускаємо на виконання два екземпляри програми. В одній включаємо режим “Сервер”, а в другій - “Клієнт”. Спочатку на сервері натискаємо кнопку “Слухати”, потім на клієнті натискаємо кнопку “З’єднати”.

  3. Тепер можна отримувати і відправляти дані. Для цього спочатку на передавачі вводимо текст і натискуємо кнопку “Відправити”.

  4. Потім на приймачі натискуємо кнопку "Отримати". Отриманий текст з’являється вікні приймача.

  5. Для обміну на різних комп’ютерах необхідно в клієнті ввести адресу сервера або його ім’я.