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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2012, 10:57   #1
Alexoid
Пользователь
 
Аватар для Alexoid
 
Регистрация: 20.04.2008
Сообщений: 32
По умолчанию Socket pop.mail.ru STAT

Здравствуйте, программисты!!!
Возникла проблемка, работаю с сервисом pop.mail.ru через Виндовс-сокеты.
В общем Сод вам все расскжет:
Код:
#include "stdafx.h" 
#include <stdio.h>
#include <WinSock2.h>
#include <string>
#include <fstream>
#include <iostream
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "wsock32.lib")
//Prototypen
int startWinsock(void);

int _tmain(int argc, _TCHAR* argv[])
{
	char buf[256];
	long rc;
	SOCKET s;
	SOCKADDR_IN addr;
  rc=startWinsock();
  if(rc!=0)
  {
    printf("ERROR: startWinsock, fehler code: %d\n",rc); // failed
  }
  else
  {
    printf("Winsock gestartet!\n");
  }
  s=socket(AF_INET,SOCK_STREAM,0);
if(s==INVALID_SOCKET)
{
  printf("ERROR: Der Socket konnte nicht erstellt werden, fehler code:%d\n",WSAGetLastError()); // Failed
  return 1;
}
else
{
  printf("Socket erstellt!\n");
}

	LPHOSTENT lpHostEntry;
	lpHostEntry = gethostbyname("pop.mail.ru");
	if(!lpHostEntry)
	{
		printf("Finding mail server");
	}
 memset(&addr,0,sizeof(SOCKADDR_IN)); 
addr.sin_family=AF_INET;
addr.sin_port=htons(110); 
addr.sin_addr = *((LPIN_ADDR)*lpHostEntry->h_addr_list);
rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));

if(rc==SOCKET_ERROR)
{
  printf("ERROR: connect gescheitert, fehler code:%d\n",WSAGetLastError()); // failed
}
else
{
  printf("Connect to mail: +OK\n");
}
std::cout<<std::endl;
ZeroMemory(buf,256);
recv(s,buf,sizeof(buf),0);
std::cout << buf<< std::endl;
/*
strcpy(buf, "auth\r\n");
send(s,buf,strlen(buf),0);
std::cout << buf;
ZeroMemory(buf,256);
int Data=recv(s,buf,256,0);
std::cout << buf;*/

strcpy(buf, "user ********\r\n");
send(s,buf,strlen(buf),0);
std::cout << buf;
ZeroMemory(buf,256);
recv(s,buf,sizeof(buf),0);
std::cout << buf<< std::endl;
strcpy(buf, "pass ********\r\n");
send(s,buf,sizeof(buf),0);
std::cout << buf;
ZeroMemory(buf,256);
recv(s,buf,sizeof(buf),0);
std::cout << buf<< std::endl;

ZeroMemory(buf,256);
strncpy_s(buf,256, "stat\r\n",6);
send(s, buf, 256, 0);
std::cout<<buf;
ZeroMemory(buf,256);
recv(s, buf, 256, 0);
std::cout<<buf<<"\n\n";

//if(nData==0 || nData == SOCKET_ERROR) std::cout<<"Recv Error"<<endl;

closesocket(s);
WSACleanup();
system("pause");
return 0;
}

int startWinsock(void)
{
  WSADATA wsa;
  return WSAStartup(MAKEWORD(1,1),&wsa);
}
А загоздка в комаде STAT (cm картинку)
Изображения
Тип файла: bmp popka.bmp (104.1 Кб, 121 просмотров)
Имеющий желание - ищет возможность,
не имеющий желание - ищет причину.
---
Истина где-то рядом
Alexoid вне форума Ответить с цитированием
Старый 09.03.2012, 11:07   #2
Alexoid
Пользователь
 
Аватар для Alexoid
 
Регистрация: 20.04.2008
Сообщений: 32
По умолчанию

Я уже и через сниффер посмотррел как Outlook c mail.ru общается, все также само:

Код:
+OK
AUTH 
+OK methods supported:
LOGIN
PLAIN
.
USER *******
+OK
PASS ***********
+OK Welcome!
STAT
+OK 0 0
QUIT
+OK POP3 server at mail.ru signing off
Имеющий желание - ищет возможность,
не имеющий желание - ищет причину.
---
Истина где-то рядом
Alexoid вне форума Ответить с цитированием
Старый 09.03.2012, 11:31   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а попробуйте добавить AUTH, авось поможет.
(через терминал вроде прокатило)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.03.2012, 11:34   #4
Alexoid
Пользователь
 
Аватар для Alexoid
 
Регистрация: 20.04.2008
Сообщений: 32
По умолчанию

В том-та и чтука, что он у меня в коде закоментен, в общем не помогаает зарраза...
-----------
Пепел Феникса-
Через терминал, в смысле через TelNet ?
Имеющий желание - ищет возможность,
не имеющий желание - ищет причину.
---
Истина где-то рядом

Последний раз редактировалось Alexoid; 09.03.2012 в 11:38.
Alexoid вне форума Ответить с цитированием
Старый 09.03.2012, 11:39   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

попробуйте отправлять или только \n или только \r.
Цитата:
Через терминал, в смысле через TelNet ?
ГиперТерминал из стандартные-связь.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.03.2012, 12:13   #6
Alexoid
Пользователь
 
Аватар для Alexoid
 
Регистрация: 20.04.2008
Сообщений: 32
По умолчанию

Терминал, я так понял проверяет connection и всё (может я конечно не прав, никогда им не пользовался) во только щас немного поюзалл
Имеющий желание - ищет возможность,
не имеющий желание - ищет причину.
---
Истина где-то рядом

Последний раз редактировалось Alexoid; 09.03.2012 в 12:38.
Alexoid вне форума Ответить с цитированием
Старый 09.03.2012, 12:56   #7
Alexoid
Пользователь
 
Аватар для Alexoid
 
Регистрация: 20.04.2008
Сообщений: 32
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
попробуйте отправлять или только \n или только \r.
не помогает, пробовал, и с pop стандартом и когда smtp писал-слва богу smtp написал, а вообще в стандартизации, написано что \r\n требуется, в кранем случеа \r-убрать можно
Мне кажется я уже всё попробовал-непомогает, антиввирус удалил, брэндаузер отключил, 3-тий день с этой фигулинкой мучаюсь
Имеющий желание - ищет возможность,
не имеющий желание - ищет причину.
---
Истина где-то рядом
Alexoid вне форума Ответить с цитированием
Старый 09.03.2012, 14:49   #8
Alexoid
Пользователь
 
Аватар для Alexoid
 
Регистрация: 20.04.2008
Сообщений: 32
По умолчанию

даже через telnet`ом законнектился)))))))))
Имеющий желание - ищет возможность,
не имеющий желание - ищет причину.
---
Истина где-то рядом
Alexoid вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
stat() для windows-файла в linux Symphel Qt и кроссплатформенное программирование С/С++ 0 10.10.2011 09:42
красивая распечатка структуры stat splattakasvs16 Общие вопросы C/C++ 0 10.05.2011 16:12
mail socket c++ Mu$T@nG Помощь студентам 0 21.07.2010 12:33
pop.gmail.com -- STAT MAcK Общие вопросы .NET 2 07.11.2008 10:07