Поле установки связи нам могут вернуть некоторые данные. Все зависит конечно от протокола и сервера. Мы попробуем на основе почтового протокола SMTP который описан в RFC 821. После установки соединения с сокетом на сервере сокет возвращает некоторую информацию о соединении. Вот ее мы и хотим посмотреть. На диалоговое окно я поместил элемент управления ListBox:
Для получения сообщения от сокета есть функция:
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(); }
Связываемся и смотрим:
Вот он нам и рассказал о себе.