Классы CAsyncSocket и CSocket пример простейшего клиента (часть
2)
Продолжим, начатое в статье Классы CAsyncSocket и
CSocket теория и пример простейшего сервера (часть 1), теперь возьмемся за простейшего
клиента.
Исходник
проекта
Клиент.
Как и для сервера, первым делом инициализируем Windows Sockets. В
класс наследник диалога добавлен член CCommSocket m_sock (CCommSocket класс наследник
CSocket). При нажатии на кнопку "Connect" выполнятся код с теми же минимальными
действия для работы сокетов Create и Connect (т.к. теперь нам не надо ждать соединения,
мы сами подсоединяемся к серверу) код выглядит следующим образом.
Проверка создан ли сокет, если не создан то создаем.
if( m_sock.m_hSocket == INVALID_SOCKET )
{
bRet = m_sock.Create();
}
если все впорядке, с созданием сокета, соединямся, иначе смотрим что за ошибка.
if( bRet )
{
if( m_sock.Connect( sIP, nPort) )
{
m_bConnected = true;
/*--- все отлично, соеденились ---*/
}
else
{
DWORD dwErr = GetLastError();
}
}
else
{
DWORD dwErr = GetLastError();
}
Передаем данные.
char *pBuff;
if( m_bConnected )
{
pBuff = new char[32];
if( pBuff != NULL )
{
/*--- записываем данные которые нужно передать в pBuff ---*/
/*--- ------------------------------------------------ ---*/
m_sock.Send( pBuff, 32);
delete[] pBuff;
}
}
Вот и все :) Помоему очень просто. Конечно, в демо проекте в клиент добавлен еще код для наглядности происходящего обмена данными и др. мелочи.
Работа системы
Строим приложения. Для этого в меню Visul Studio нажимаем Build-Batch Build,
в появившемся окошке, ставим галки для нужной конфигурации (Debug или Realese).
Запускаем построенные приложения. В клиенте жмем Connect, после чего заполням
поле для данных (на рисунке поле заполнено "22222"), жмем кнопку "Отправить".
Получаем приблизительно следующую картину.


Работа сервера состоит в том что к полученным данным он вначале дописывает слово
"получено" и отправляет клиенту. Клиент при получении, просто выводит полученные
данные в поле. Если закрыть приложение сервер (Listener), клиент сменит состояние
с установлено на "разорвано".
Вроде все.