пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Посылка и прием сообщения приложением.

 

 

Посылаем сообщение и получаем.

Необходимо добавить в приложение функции, которые позволили бы осуществлять прием и посылку сообщений. После того, как между приложениями установлено соединение, пользователь может ввести текстовое сообщение в окно для редактирования, расположенное в центре диалогового окна, затем, нажав кнопку SEND, сообщение посылается другому приложению. Чтобы вставить требуемые функции, выполняемые после нажатия кнопки SEND, вначале необходимо позаботиться о том, чтобы была произведена проверка того, содержится ли в окне какое-либо сообщение, затем определить его длину, потом послать сообщение, а затем добавить сообщение в окно списка. Для вставки функции используем мастер классов, которая будет выполняться после наступления события нажатия кнопки IDC_BSEND. Редактируем функцию.

 

void CSockDlg::OnBsend()

зн

int iLen;

int iSent;

//Обновляем элементы управления в соответствии с переменными

UpdateData(TRUE);

//Есть сообщение для посылки?

if (m_strMessage !="")

зн

//Получаем длину сообщения

iLen = m_strMessage.GetLength();

//Посылаем сообщение

iSent=

m_sConnectSocket.Send(LPCTSTR(m_strMessage), iLen  зн;

//Смогли послать?

if (iSent == SOCKET_ERROR)

зн

зн

else

зн

// Добавляем сообщение в список

m_ctlSent.AddString(m_strMessage);

// Обновляем переменные согласно элементам управления

UpdateData(FALSE);

знзнзн

 

Когда срабатывает функция OnReceive, что происходит в момент, когда приходит сообщение, мы извлекаем это сообщение из сокета, используя функцию Receive. После того, как сообщение извлечено, мы преобразуем его в тип String и добавляем его в список полученных сообщений. Эти функции можно создать, если отредактировать существующую функцию OnReceive в диалоговом классе.

 

void CSockDlg::OnReceive()

зн

char *pBuf = new char[1025];

int iBufSize = 1024;

int iRcvd;

CString strRecvd;

//Получаем сообщение

iRcvd = m_sConnectSocket.Receive(pBuf, iBufSize);

//Получили что-либо?

if (iRcvd == SOCKET_ERROR)

зн

зн

else

зн

//Отрезаем конец сообщения

pBuf[iRcvd] = NULL;

//Копируем сообщение в CString

strRecvd = pBuf;

//добавляем сообщение в список полученных сообщений

m_ctlRecvd.AddString(strRecvd);

// обновляем переменные в соответствии с элементами управления

UpdateData(FALSE);

зн

зн

 

Сейчас можно скомпилировать и запустить две копии приложения, соединив их друг с другом. После того, как соединение будет установлено, можно ввести сообщение в одном приложении и послать его другому приложению.


18.01.2020; 23:03
хиты: 47
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь