Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2010, 23:05   #1
pufystyj
Форумчанин
 
Аватар для pufystyj
 
Регистрация: 10.11.2010
Сообщений: 569
Вопрос нужно докончить SMTP протокол

помогите докончить SMTP протокол!

вот мой код (правда здесь не всё моё):


Цитата:
#include <windows.h>
#include <winsock.h>
#include <stdio.h>

WSADATA ws;
SOCKET s;
struct sockaddr_in addr;
hostent *d_addr;
char text[1024];

int main()
{
// инициализируем сокеты
if (FAILED (WSAStartup (MAKEWORD( 1,1 ), &ws)))
{
printf("Error in WSAStartup(...)\n");
return 1; }

// создаем сокет
s = socket (AF_INET, SOCK_STREAM, 0);
if (s == INVALID_SOCKET)
{
printf("Error in socket(...)\n");
return 1; }

// получаем адрес сервера
d_addr = gethostbyname ("smtp.mail.ru");
if (d_addr==NULL)
{
printf("Error in gethostbyname(...)\n");
return 1; };

// заполняем параметры адреса
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = *((unsigned long *) d_addr->h_addr);
addr.sin_port = htons (25);

// устанавливаем соединение
if (SOCKET_ERROR == (connect (s, (sockaddr *) &addr,
sizeof (addr))))
{
printf("Error in connect(...)\n");
return 1; }

// ждем ответ от сервера
recv(s,text,sizeof(text),0);
printf("recv - %s", text);

// приветствуем сервер
strcpy(text,"HELO smtp.mail.ru\r\n");
send(s,text,strlen(text),0);
printf("send - %s", text);

// ждем подтверждение от сервера
recv(s,text,sizeof(text),0);
printf("recv - %s", text);

// начинаем отправлять конверт состоящий из полей
// MAIL FROM: и RCPT TO: После каждого поля ждем
// подтверждение

// сообщаем отправителя
strcpy(text,"MAIL FROM: x-enter12 ");
send(s,text,strlen(text),0);
printf("send - %s", text);

// ждем подтверждение от сервера
recv(s,text,sizeof(text),0);
printf("recv - %s", text);

// сообщаем получателя
strcpy(text,"RCPT TO: x-enter@mail.ru ");
send(s,text,strlen(text),0);
printf("send - %s", text);

// ждем подтверждение от сервера
recv(s,text,sizeof(text),0);
printf("recv - %s", text);

// подаем команду, что готовы начать передачу письма
strcpy(text,"DATA\r\n");
send(s,text,strlen(text),0);
printf("send - %s", text);

// ждем подтверждение от сервера
recv(s,text,sizeof(text),0);
printf("recv - %s", text);

// передаем заголовок

// от кого письмо
strcpy(text,"FROM: x-enter12@mail.ru ");
send(s,text,strlen(text),0);
printf("send - %s", text);

// кому письмо
strcpy(text,"TO: x-enter@mail.ru ");
send(s,text,strlen(text),0);
printf("send - %s", text);

// тема письма
strcpy(text,"SUBJECT: test\r\n");
send(s,text,strlen(text),0);
printf("send - %s", text);

// текст письма
strcpy(text,"Hi!\nIt is a message for you\n");
send(s,text,strlen(text),0);
printf("send - %s", text);

// говорим, что закончили
strcpy(text,"\r\n.\r\n");
send(s,text,strlen(text),0);
printf("send - %s", text);
recv(s,text,sizeof(text),0);
printf("recv - %s", text);

// прощаемся с сервером
strcpy(text,"QUIT");
send(s,text,strlen(text),0);
printf("send - %s", text);

// закрываем сокет
closesocket(s);
system("PAUSE");
return 0;
}
вот сначал когда запускаю - у мя выбивает это:

а через 2 минуты

что надо прописать чтоб SMTP протокол роботал
Это ещё не конец и даже не начало конца, это возможно только конец начала.

Последний раз редактировалось pufystyj; 11.11.2010 в 23:13.
pufystyj вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
протокол MD5 проблема. SKS Операционные системы общие вопросы 1 02.09.2010 23:49
Протокол POP3 и SMTP. profi Свободное общение 4 07.02.2010 18:01