Войти или зарегистрироваться
Выберите удобный способ — аккаунт создастся автоматически.
Или войдите по логину и паролю

17.06.2010, 12:52
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
С нами:
9410786
Репутация:
2731
|
|
Код:
recv(s, response, 1024, 0);
Этим кодом я получаю 1024 байта и записываю их в response.
Как получить абсолютно всю информацию, предварительно не зная сколько байтов, и записать все это в один массив символов?
Код:
do
{
iResult = recv(s, response, 1024, 0);
}
while(iResult > 0);
Этим кодом получается вся информация, но проблема в том, что в response оказываются последние 1024 байта, что очевидно. Необходимо как-то создать буфер неизвестной длины, и в цикле делать конкатенацию буфера вместе с полученной инфой, но как?
Еще как вариант - создать динамический массив, и в цикле расширять его размер, опять вопрос - как?
Спасибо заранее.
|
|
|

17.06.2010, 13:33
|
|
Участник форума
Регистрация: 07.01.2009
Сообщений: 237
С нами:
9126697
Репутация:
97
|
|
Сообщение от mailbrush
Код:
recv(s, response, 1024, 0);
Этим кодом я получаю 1024 байта и записываю их в response.
Как получить абсолютно всю информацию, предварительно не зная сколько байтов, и записать все это в один массив символов?
Код:
do
{
iResult = recv(s, response, 1024, 0);
}
while(iResult > 0);
Этим кодом получается вся информация, но проблема в том, что в response оказываются последние 1024 байта, что очевидно. Необходимо как-то создать буфер неизвестной длины, и в цикле делать конкатенацию буфера вместе с полученной инфой, но как?
Еще как вариант - создать динамический массив, и в цикле расширять его размер, опять вопрос - как?
Спасибо заранее.
Храни строки в списке, а не в массиве. Например, принимаешь по 1024 символа.
Собственно список - это и есть какое-то подобие динамического массива.
Тогда кодишь так:
Код:
struct info
{
info * next; // Указатель на след. элемент
info * prev; // и на предыдущий
char data[1024];
} node;
...
recv(s, node.data, 1024, 0);
/*
В классе хранишь указатели на первую принятую строку. Далее раотаешь с объектом.
*/
...
Далее можно написать класс, реализующий линейный двусвязный список, нафигачить ему конструкторы копирования всякие, перегрузку выражений и т.д.
|
|
|

17.06.2010, 13:08
|
|
Постоянный
Регистрация: 25.03.2008
Сообщений: 670
С нами:
9541766
Репутация:
2407
|
|
Код:
string answer;
while( (iResult = recv(s, response, 1024, 0)) > 0)
answer.append(response, iResult);
//весь ответ в answer.c_str()
Если нуллбайты будут в ответе, то такой способ скорее всего не подойдет.
Последний раз редактировалось d_x; 17.06.2010 в 13:11..
|
|
|

17.06.2010, 13:33
|
|
Познавший АНТИЧАТ
Регистрация: 01.12.2006
Сообщений: 1,769
С нами:
10233548
Репутация:
1118
|
|
Посоветуйте какую нить приблуду для парсинга XML и ini. Желательно чтобы обвертки поменьше катать нужно было.
|
|
|

21.04.2026, 07:37
|
|
Познающий
Регистрация: 12.04.2026
Сообщений: 94
С нами:
48988
Репутация:
10
|
|
Посоветуйте как на чистом curl сделать авторизацию на vk.com плюс, это с ubuntu и чтобы авторизация происходила по qr-коду?
|
|
|

06.07.2007, 00:16
|
|
Познающий
Регистрация: 24.12.2006
Сообщений: 90
С нами:
10200612
Репутация:
168
|
|
cgi скрипт на С
Возможно вопрос не по адрессу, но всё же. Имеется cgi скрипт написан на С, скрипт принимает разные параметры через get (скрипт работает на apache 1.33 freebsd 6.2 /может играет роль/)
так вот у меня вопрос, возможно или переполнить бувер в таком скпирте, ведь как я понимаю то это таже откомпилированная "программа", и как я успел прочитать "Скрипт на языке C ничем не отличается от обычной C-программы. Собственно, это набор процедур, среди которых есть главная процедура. Этой главной процедуре передается управление при загрузке программы в оперативную память.", на основании сего я и сделал свой вывод. Если ответ положительный то возможно датите ссылки где про это можно почитать, зарание спасибо))
|
|
|

06.07.2007, 01:20
|
|
Участник форума
Регистрация: 04.11.2006
Сообщений: 150
С нами:
10271420
Репутация:
175
|
|
Сообщение от big_BRAT
так вот у меня вопрос, возможно или переполнить бувер в таком скпирте
может ты исходник скрипта для начала приведёшь?
|
|
|

06.07.2007, 14:15
|
|
Познающий
Регистрация: 24.12.2006
Сообщений: 90
С нами:
10200612
Репутация:
168
|
|
кому интересно посмотреть выложил файл /по поводу cgi on c/
http://files-upload.com/352662/file.tar.gz.html
|
|
|

26.12.2007, 01:42
|
|
Участник форума
Регистрация: 02.04.2006
Сообщений: 273
С нами:
10582516
Репутация:
114
|
|
Народ помогите разобраться с этим кодом уже 2 часа с ним парюсь. (всякая ненужная фигня вырезанна)
Код:
int main(int argc, char* argv[])
{
char com[80];
while(1)
{
cout<<"# ";
gets(com);
int iret=command(com);
if (iret==2) break;
cout<<"\n\n";
}
return 0;
}
int command(char *s)
{
char * pch;
pch = strtok (s," ");
while (pch != NULL)
{
if(!strcmp("-add",pch))
{
pch = strtok (NULL, " ");
if (pch)
{
if (!strcmp("s",pch))
{
pch = strtok (NULL, " ");
add_stud(pch);
break;
}
}
cout<<"To get help about command put -help add";
return 1;
}
if(!strcmp("-exit",pch) || !strcmp("-quit",pch))
{
cout<<"Good Buy\n";
return 2;
}
pch = strtok (NULL, " ");
}
cout<<"Command is not supported! Put -help to get Help";
return 0;
}
int add_stud(char *n)
{
char t[80];
int i5Valu[5];
cout<<"EnterFIO\n";
cin>>t;
cout<<"Enter 5 Values\n";
return 1;
}
дело в том что если мы вводим
Вместо 1 может быть что угодно суть не в этом.
То на экране появляется запрос на ввод FIO
НО когда мы вводим фио и нажимаем ентер то у нас появляются 2 лишние строки с сообщением
Код:
Command is not supported! Put -help to get Help
Откуда????? они там берутся не как немогу догнать.
Вот что выводиться на экран.
Код:
# -add s 1
EnterFIO
asdsad
Enter 5 Values
Command is not supported! Put -help to get Help
# Command is not supported! Put -help to get Help
#
|
|
|

12.01.2008, 00:45
|
|
Banned
Регистрация: 22.08.2006
Сообщений: 608
С нами:
10378404
Репутация:
1095
|
|
>> Не хочу спорить, возможно я и не прав... Ну мне лично так кажется...
а я и не собирался ни о чем спорить.. вопрос был поствлен такой: "чем отличается Vc++ и C++?"
ты ответил что это "идентичные понятия", но VC++ "используется для разработки визуальных интерфейсов".. я же написал в чем заключается разница между этими понятиями.. нету такого языка как VC++ или такой среды разработки как С++ - надо различать язык программирования от средств разработки приложений на данном языке..
>> Она потому и называется Visual C++, потомучто заточена на клепание приложение с интерфейсами...
не совсем так.. "Визуальная" она потому, что предоставляет разработчику набор удобных инструментов c визуальным интерфейсом для того чтобы упростить процесс создания приложений..
>> Всё же - она называется Microsoft Visual C++ если на то пошло...
ну, я полагаю, все и так поняли что именно о MSVC++ идет речь..
>> Среда разработки называется Microsoft Visual Studio...
MSVS - это интегрированная среда разрботки, включающая инструменты для разработки приложений на нескольких языках, в которую может быть включена и MSVC++.. у меня, например, стоит просто MSVC++ EE..
>> А Visual C++ потому что есть ***ня вроде MFC...
кстати говоря, в имеющейся у меня в наличии MSVC++ Express Edition этого самого MFC и нету..
>> P.S. Есть например Visual Prolog, он же от этого не стал средой в Visual Studio...
незнаю, что там с Visual Prolog'ом.. это, наверно, и язык и среда программирования, типа как VisualBasic.. но VC++ - это именно среда, а не язык..
>> Короче, кто как хочет - так и трактует  Это моё ИМХО
)
Последний раз редактировалось Digimortal; 12.01.2008 в 00:53..
|
|
|
|
 |
|
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 50 (пользователей: 0 , гостей: 50)
|
|
|
|