|
|
|
| Доброго времени суток.
Помогите пожалуйста разобраться с получением ответа от сервера
int Pop3::MessageCount()
{
char command[] = "LIST\r\n";
char buf[8192];
int result, i;
if(!Loggedin)
{
return -1;
}
Sock->Send(command, strlen(command));
result = Sock->Recv((char*) &buf, sizeof(buf));
if(result == SOCKET_ERROR || result == 0)
return -1;
if(Response)
{
delete [] Response;
Response = new char[sizeof(buf)];
}
for(i=0; i<result; i++)
{
Response = buf;
}
printf("%s\n", Response);
return 0;
}
|
в результате получаю только первую строку ответа "+OK Logged in", как получить полностью весь ответ?
P.S. пишу в ИСР Borland C++ builder 6.
P.P.S. На текущий момент это тестовое консольное приложение | |
|
|
|
|
|
|
|
для: hell_riser
(15.07.2009 в 14:08)
| | for(i=0; i<result; i++)
{
Response = buf;
} |
А что делает этот цикл? | |
|
|
|
|
|
|
|
для: GeorgeIV
(15.07.2009 в 18:38)
| | да, собственно бессмысленный кусок кода оставшийся от предыдущих попыток ...
уже туго соображаю, вроде было что-то типа
string str ="";
for(i=0: i<result; i++)
{
str +=buf[i];
}
|
пытался в строку загонять по символьно содержание буфера, результат тот-же
p.s. вроде бы нашел выход:
int Pop3::MessageCount()
{
char command[] = "LIST\r\n";
char buf[8192];
string Response;
int result;
if(!Loggedin)
{
return -1;
}
Sock->Send(command, strlen(command));
do
{
result = Sock->Recv((char*)&buf, sizeof(buf));
Response = buf;
cout << Response;
}
while(result > 0);
return 0;
}
|
но теперь выполнение программы останавливается после вызова данного метода
прогнал в дебагере пошагово, останов происходит в
int Socket::Recv(char* buffer, int length)
{
return recv(Sock, buffer, length, 0);
}
|
подскажите пожалуйста где ошибка, а то, голова уже пухнет :(
P.S. всё разобрался. | |
|
|
|