Мы данную возможность попробуем на основе почтового протокола. Нам нужно в ответ поздороваться с сервером вот по такой схеме. Все подробности в RFC 821.
HELO <SP> <domain> <CRLF>
В ответ сервер поздоровается с нами. Для отправки данных у нас есть функция Send():
virtual int Send( const void* lpBuf, int nBufLen, int nFlags = 0 );
При успешном выполнении функция вернет количество отосланных символов иначе SOCKET_ERROR. Итак, пробуем:
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); char bufferhello[512]; strcpy(bufferhello,"HELO USC-ISIF.ARPA\r\n"); if (sa.Send(bufferhello,strlen(bufferhello))!=SOCKET_ERROR) { sa.Receive(buffer,sizeof(buffer)); m_Reserve.AddString(buffer); } else AfxMessageBox("Error Send"); } sa.Close(); }
И смотрим, что будет в ответ. Сервер ответит, как положено. Обратите внимание на то, что я узнал свой домен. Я передал серверу домен из RFC какой попало, a в ответ он мне выдал www.hera.sakha.ru спасибо однако. Кстати для интереса можете попробовать команду HELP только учтите, что буфер нужен большой.