Шаг 28 - Поддержка сокетов MFC, Получение данных из сокета

Поле установки связи нам могут вернуть некоторые данные. Все зависит конечно от протокола и сервера. Мы попробуем на основе почтового протокола SMTP который описан в RFC 821. После установки соединения с сокетом на сервере сокет возвращает некоторую информацию о соединении. Вот ее мы и хотим посмотреть. На диалоговое окно я поместил элемент управления ListBox:

gif/28_1.gif (2230 b)

Для получения сообщения от сокета есть функция:

virtual int Receive( void* lpBuf, int nBufLen, int nFlags = 0 );

Если без ошибок, то функция вернет количество принятых байтов, иначе вернет 0. Давайте ее применим.

void CTestConnectDlg::OnConnect() 
{
	WSADATA wsaData; 
	if (!AfxSocketInit(&wsaData))
	{
		AfxMessageBox("Error Unit");
		return;
	}

	CSocket sa;
	sa.Create();
	if (sa.Connect("pop.yandex.ru",25))
	{
		char buffer[255];
		sa.Receive(buffer,sizeof(buffer)); 
		m_Reserve.AddString(buffer); 

	} 
	else AfxMessageBox("Error Connect");
	sa.Close(); 	
}

Связываемся и смотрим:

gif/28_2.gif (2756 b)

Вот он нам и рассказал о себе.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 17.11.2001