Посылаем сообщение и получаем.
Необходимо добавить в приложение функции, которые позволили бы осуществлять прием и посылку сообщений. После того, как между приложениями установлено соединение, пользователь может ввести текстовое сообщение в окно для редактирования, расположенное в центре диалогового окна, затем, нажав кнопку 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);
зн
зн
Сейчас можно скомпилировать и запустить две копии приложения, соединив их друг с другом. После того, как соединение будет установлено, можно ввести сообщение в одном приложении и послать его другому приложению.