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

  #3  
Старый 17.01.2010, 19:23
isqad88
Новичок
Регистрация: 16.12.2009
Сообщений: 14
Провел на форуме:
20162

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

Цитата:
Сообщение от Spy2ex  
У тебя буффер один под запрос и ответ. text[]
либо обнуляй после каждого запроса -ответа, либо введи дополнительный.
Код:
#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 (25);
	//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), 0);
	cout<<rec<<"\n";
	//î÷èñòêà
	memset(rec, 0, sizeof(rec));
	//Ïðèâåòñòâóåì ñåðâåð
	
	strcpy(sen, "HELO smtp.mail.ru\r\n");
	send(s, sen, sizeof(sen), 0);
	cout<<sen<<"\n";
	//î÷èñòêà
	memset(sen, 0, sizeof(sen));


	recv(s, rec, sizeof(rec), 0);
	cout<<rec<<"\n";
	memset(rec, 0, sizeof(rec));
	//àâòîðèçàöèÿ íà ñåðâåðå
	
	strcpy(sen, "AUTH LOGIN\r\n");
	send(s, sen, sizeof(sen), 0);
	cout<<sen<<"\n";
	//î÷èñòêà
	memset(sen, 0, sizeof(sen));
	
	recv(s, rec, sizeof(rec), 0);
	cout<<rec<<"\n";
	memset(rec, 0, sizeof(rec));


	closesocket(s);
	WSACleanup();



	
	
	return 0;
}
Вот ввел два буфера, и все равно сервак ругается на не правильную команду 500 (( дело в AUTH LOGIN
 
Ответить с цитированием