Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Уроки по Visual C++ (MFC, платформа .NET)


Информационный Канал Subscribe.Ru

Visual C++. MFC. Уроки по программированию с сайта http://progs.biz

Рассылка №42

Visual C++. MFC. Урок 35. Пишем клиент с использованием CSocket.
Visual C++. MFC. Урок 36. Испытываем сетевое приложение.

Полные версии уроков (с картинками) можно найти по адресам
Урок 35. Пишем клиент с использованием CSocket.
Урок 36. Испытываем сетевое приложение.

Visual C++. MFC. Урок 35. Пишем клиент с использованием CSocket

На прошлом занятии мы сделали сервер. На этом занятии мы с вами сделаем клиента. Запустите Visual C++ и создайте с помощью мастера MFC AppWizard (EXE) новое основанное на диалоге приложение. Назовите проект client. На всех шагах мастера можно почти ничего не менять - установки по умолчанию нас вполне удовлетворяют. Только обязательно установите на шаге 2 поддержку Windows Sockets. Если хотите, то можете на этом же шаге мастера убрать галочки About Box и ActiveX Controls - они нам не понадобятся.

После создания заготовки разместите на форме две кнопки и edit. Для кнопок задайте идентификаторы IDC_CONNECT и IDC_SEND. Свойство Caption для них установите в Connect и Send соответственно. По первой кнопке наш клиент будет соединяться с сервером, по второй - отправлять данные, введенные пользователем в edit. Для edit'а для определенности зададим идентификатор IDC_DATA.

К edit'у припишите с помощью ClassWizard'а переменную m_sData типа CString.

Теперь приступаем непосредственно к написанию кода. Добавьте в наш проект класс CMySocket. Предком этого класса выберите класс CSocket (точно также, как и для серверной части, которой мы занимались на прошлом уроке). Внутри этого класса должен быть указатель на диалоговое окно. Для создания такого указателя добавьте соответствующую переменную в public-секцию нашего класса:

public:
    CClientDlg* m_pDlg;

Так как мы используем класс CClientDlg, то добавьте строку

    class CClientDlg;

перед классом CMyClient.

Как и для серверной части, добавим в класс CMySocket метод, в котором для переменной m_pDlg будет задаваться некоторое значение:

void CMySocket::SetParentDlg(CClientDlg *pDlg)
{
    m_pDlg=pDlg; //Задаем указатель на диалоговое окно
}

Теперь добавляем переменную в диалоговый класс CClientDlg, в которой будет храниться экземпляр класса CMySocket:

...
#include "MySocket.h"
 ...
class CClientDlg : public CDialog
{
public:
    CMySocket m_pConnectSocket; //Передающий сокет
    ...

Как и для сервера, не забудьте добавить соответствующий include.

Добавьте следующий код в метод OnInitDialog класса CClientDlg:

BOOL CClientDlg::OnInitDialog()
{
    ...
    // TODO: Add extra initialization here
    m_pConnectSocket.SetParentDlg(this);
    m_pConnectSocket.Create();
    ...
}

В этом коде мы при создании диалого записываем в переменную m_pDlg класса CMySocket указатель на клиентское диалоговое окно.

Идем дальше. Добавим код, который будет выполняться при нажатии на кнопки с заголовками Connect и Send:

void CClientDlg::OnConnect()
{
    // TODO: Add your control notification handler code here
    //Подсоединяемся к серверу
    m_pConnectSocket.Connect("127.0.0.1", 2000);
}

void CClientDlg::OnSend()
{
    // TODO: Add your control notification handler code here
    UpdateData(TRUE); //Забираем данные из edit'а
    m_pConnectSocket.Send(m_sData, m_sData.GetLength()); //Пересылаем
}

Все! Клиент закончен.

Наверх

Visual C++. MFC. Урок 36. Испытываем сетевое приложение

Испытание нашей программы - это самое простое. На вашем компьютере должен быть установлен стек протоколов TCP/IP. Если ваш компьютер подключен к Интернету, то так оно и есть. Если не подключен, то TCP/IP, скорей всего, все равно есть - в Windows эти сетевые протоколы устанавливаются по умолчанию.

Итак, запустите оба приложения на одном компьютере. Так как ни в сервере, ни в клиенте нет защиты от дурака, то при испытании лучше выполнять действия именно в таком порядке:

Сначала на серверной части нажмите на кнопку Listen. Сервер открывает 2000 порт на компьютере и начинает его слушать.

Затем у клиента нажимаем на кнопку Connect. Клиент подсоединяется к нашему серверу на 2000 порту. На серверной части появится соответствующий messagebox.

Закройте его и перейдите к клиенту. Наберите что-нибудь в edit'е и нажмите на кнопку Send. На серверной части появится messagebox.

Закройте его. Переданные данные отобразятся в edit'е на сервере.

Конечно, наше приложение будет работать и на настоящей сети. Только вам перед компилящией надо слегка изменить текст программы - а именно, в клиентской части вместо IP-адреса 127.0.0.1 указать IP-компьютера, на котором работает наша серверная часть. Выяснить его можно через утилиты командной строки winipcfg (для Windows 9* и Me) и ipconfig (в Windows NT, 2000, XP). Кстати говоря, вместо IP-адреса можно использовать и имя компьютера (в двойных кавычках). Например, имя "localhost" эквивалентно "127.0.0.1".

Наверх

Другие рассылки с сайта progs.biz

Рассылки Subscribe.Ru
Уроки по C# и .NET.

Уроки по C# -новому языку от Microsoft для платформы .NET. Создание разных типов приложений (консольные, для Windows, веб-приложения), работа с базами данных, создание собственных компонентов. Примеры, исходники, статьи, FAQ.


Copyright Алексеев Игорь, 2002

Copyright cайт progs.biz, 2002



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное