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р.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.