Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: HELP_MY pop3 через winsock  (Прочитано 6929 раз)
0 Пользователей и 1 Гость смотрят эту тему.
зрщутшч
Гость
« : 26-12-2008 08:38 » 

Здравствуйте.
Помогите, пожалуйста, чайнику.
Не могу получить нормальный ответ от сервера для POP3.
Выдает почему-то "43" , не могу понять в чем дело. Жаль
листинг после connect():
.........................................................................
. . .
// ... создание сокета ...
. . .
if (SOCKET_ERROR == connect (s, (sockaddr*)&address, sizeof (address))) { return("connection error"); }
int iResult;
char status[1024]; // буфер для обработки информации
String ^myResult;
// проверяем готовность сервера ---------------------------
iResult=recv(s, status, 1024, 0);
if(iResult == SOCKET_ERROR) { return("error RECV"); }
// посылаем имя пользователя ------------------------------
char *iUser = "uwe.design";
sprintf_s(status, "USER %s\r\n", iUser);
send(s, status, sizeof(status), 0);
// проверяем результат операции ---------------------------
iResult=recv(s, status, 1024, 0);
if(iResult == SOCKET_ERROR) { return("error LOGIN"); }
myResult = iResult.ToString();
return(iResult);
. . .
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 26-12-2008 13:29 » 

Ну почтовые сервера изначально разрабатывались для *nix систем. Поэтому символ перевода строки просто \n. Я так думаю, что в этом ошибка.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
зрщутшч
Гость
« Ответ #2 : 26-12-2008 16:37 » 

Ну почтовые сервера изначально разрабатывались для *nix систем. Поэтому символ перевода строки просто \n. Я так думаю, что в этом ошибка.

Спасибо за подсказку.
Я тут кое-что еще уже накопал. Вот уж правда, чтоб задать правильно вопрос, нужно знать хотя бы 50% ответа Улыбаюсь))

recv - receive a message from a connected socket
RETURN VALUE
Upon successful completion, recv() shall return the length of the message in bytes. If no messages are available to be received and the peer has performed an orderly shutdown, recv() shall return 0. Otherwise, -1 shall be returned and errno set to indicate the error.

То есть нужно теперь понять, что такое errno и с чем его едят. Я С++ только две недели учу, причем жисть заставила. И буду очень благодарен за любую помощь.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #3 : 26-12-2008 16:47 » 

Просто глобальная переменная.
Цитата
The variable errno contains the system error number. You can change the value of errno.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
зрщутшч
Гость
« Ответ #4 : 27-12-2008 13:26 » 

Привет всем! в общем сам отвечаю на свой вопрос Улыбаюсь))))
iResult дает ссылку на status, после приема сообщения функцией recv нужно записать:
status[iResult] = '\0'; после чего считать данные из status, в моем случае это делается так:
String ^userString = gcnew String(status);
Но все равно, спасибо за моральную поддержку, удачи!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines