Показать сообщение отдельно

  #5  
Старый 17.01.2010, 20:37
Spy2ex
Новичок
Регистрация: 20.09.2008
Сообщений: 29
Провел на форуме:
528520

Репутация: 13
По умолчанию

нужно подключаться, не на 25 порт а на 2525 в мейл.ру так, рабочий код.
Код:
#include <iostream>
#include <winsock2.h>

using namespace std;

int main()
{
	int err;
	
	WSADATA wsaData;
	SOCKET s;
	hostent *d_addr;
	struct sockaddr_in addr;
	char rec[1024];//áóôåð âõîäíûõ ñîîáùåíèé
	char sen[1024];//áóôåð èñõ ñîîáùåíèé
	
	err = WSAStartup(MAKEWORD(1, 1), &wsaData);
	if(err != 0)
	{
		cout<<"Error: "<<err<<"\n";
		return 1;
	}
	

	cout<<"Ha4aJIo Pa6oTIb c coketamu\n";
	//Ñîçäàíèå ñîêåòà
	s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	if(s == INVALID_SOCKET)
	{
		cout<<"Invalid socket\n";
		return 1;
	}
	//ïîëó÷åíèå àäðåñà ñåðâåðà
	d_addr = gethostbyname("smtp.mail.ru");
	if(d_addr == NULL)
	{
		cout<<"Error gethostbyname\n";
		return 1;
	};
	//ñîåäèíÿåìñÿ
	
	addr.sin_family = AF_INET;//òèï TCP/IP
	addr.sin_addr.s_addr = *((unsigned long *) d_addr->h_addr);
	addr.sin_port = htons (2525);
	//connect
	if(SOCKET_ERROR == (connect(s, (sockaddr *) &addr, sizeof (addr))))
	{
		cout<<"Error in connect\n";
		return 1;
	} else
	{
		cout<<"YsneLIIHoe coegunenue\n";
	}
	memset(rec, 0, sizeof(rec));
	memset(sen, 0, sizeof(sen));
	
	 recv( s, rec, sizeof(rec)-1, 0 ); //I отвтет сервера

     strcpy(sen,"EHLO smtp.mail.ru\r\n");
     send(s,sen,strlen(sen),0); 
     recv( s, rec, sizeof(rec)-1, 0 );

     strcpy(sen,"AUTH LOGIN\r\n");
     send(s,sen,strlen(sen),0); 
     recv( s, rec, sizeof(rec)-1, 0 );


    closesocket(s);
	WSACleanup();	
	
	return 0;
}
 
Ответить с цитированием