SOCKET s1;
int len;
char buf[100],buf1[100];
char *comp="http://mail.tut.by\0";//например
struct hostent *hp;
struct sockaddr_in sin2;
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2,2),&wsaData)!=0)
{
printf("Error!!");
return 0;
}
hp=gethostbyname(comp);
for (int i=0;i<4;i++)
{
printf("%d",(*(hp->h_addr+i)));
if(i!=3)
printf(".");
}
mail-клиент
Вобщем пишу (пытаюсь) простейший почтовый клиент.
Вопрос по протоколу pop3:если я хочу соеденится с сервером mail.tut.by
например, мне надо (если использовать WIN32 API) создать сокет, связать его с сервером и путём обмена сообщениями могу уже иметь непосредственный доступ к ящику?правильно ли я делаю?и какие классы существуют в MFC (в том числе и для протоколов SMTP, IMAP)
Заранее спасибо.
Цитата: Sergei_
Привет всем!
Вобщем пишу (пытаюсь) простейший почтовый клиент.
Вопрос по протоколу pop3:если я хочу соеденится с сервером mail.tut.by
например, мне надо (если использовать WIN32 API) создать сокет, связать его с сервером и путём обмена сообщениями могу уже иметь непосредственный доступ к ящику?правильно ли я делаю?и какие классы существуют в MFC (в том числе и для протоколов SMTP, IMAP)
Заранее спасибо.
Вобщем пишу (пытаюсь) простейший почтовый клиент.
Вопрос по протоколу pop3:если я хочу соеденится с сервером mail.tut.by
например, мне надо (если использовать WIN32 API) создать сокет, связать его с сервером и путём обмена сообщениями могу уже иметь непосредственный доступ к ящику?правильно ли я делаю?и какие классы существуют в MFC (в том числе и для протоколов SMTP, IMAP)
Заранее спасибо.
Все именно так, ничего особенного. MFC для этого не использовал, но в нем вроде нет реализации почтовых протоколов. Есть HTTP,FTP,Gopher. (версия 6.1)
gethostbyname(char*), но она выдает неправильный адрес.С чем могут быть связаны ошибки?
Именно ее я и использовал при отправке почты. А что она возвращает? Можешь привести кусок кода?
Перенесенно, так как к общим вопросам ну никак не относится.
не могу понять, зачем народ пишет собственных почтовых клиентов, когда есть уже много готовых?...
Цитата: cdc
не могу понять, зачем народ пишет собственных почтовых клиентов, когда есть уже много готовых?...
Просто курсач сделать надо, да и самому на будущее разобраться не мешает.
Привожу кусок кода, как я получаю IP по имени сервера.
Код:
Правильно ли я делаю? Выводит какие-то отрицательные адреса.
Заранее спасибо.
Код:
char *comp="mail.tut.by";
и все заработает
Цитата: cdc
нужно писать
и все заработает
Код:
char *comp="mail.tut.by";
и все заработает
Так тоже писал, результат тот же :(
А вообще кроме этого правильно?
printf("%d",(*(hp->h_addr+i)));
значение представляется знаковым 8-ми битным. Подставь так:
printf("%d",(BYTE)(*(hp->h_addr+i)));
должно сработать.
У меня делалось так:
(BYTE)hp->h_addr_list[0]
думаю разницы никакой, h_addr - вроде как макрос h_addr_list[0]
Теперь проблема законнектиться :)
Вот кусок кода где я соединяюсь с сервером:
Код:
memset((char*)&sin2,'\0',sizeof(sin2));
sin2.sin_family=AF_INET; //struct hostent *hp;
memcpy((char*)&sin2.sin_addr ,hp->h_addr,hp->h_length);
sin2.sin_port=110;
s1=socket(AF_INET,SOCK_STREAM,0);
if(connect(s1,(struct sockaddr *)&sin2,sizeof(sin2))!=0)
{
printf("ERROR2!!!!");
closesocket(s1);
return 0;
}
sin2.sin_family=AF_INET; //struct hostent *hp;
memcpy((char*)&sin2.sin_addr ,hp->h_addr,hp->h_length);
sin2.sin_port=110;
s1=socket(AF_INET,SOCK_STREAM,0);
if(connect(s1,(struct sockaddr *)&sin2,sizeof(sin2))!=0)
{
printf("ERROR2!!!!");
closesocket(s1);
return 0;
}
Я немного не понимаю как и чем заполняется структура in_addr,
возможно там что-то неправильно.
Код:
sin2.sin_port=htons(110);
Я наконец-то законнектился!:)
Всем спасибо за содействие, буду разбираться дальше.
Вопросы буду постить тут :)