Вопрос по С++

Cris

Member
хм....) походу так и есть))
кста нехто не может поповетовать какойнить хороший сниффер пакетов? хочю зделать клиент для браузерной игрушки)) я протокол HTTP хотьи читал но надо увидить его на практике))
скачал один - CommView, вроде как все показивает, но одна проблема - нету фильтра, он показивает все и сразу и уследить за чем либо сложно а по логам лазить неудобно(
 

dreamer

Member
кста нехто не может поповетовать какойнить хороший сниффер пакетов? хочю зделать клиент для браузерной игрушки)) я протокол HTTP хотьи читал но надо увидить его на практике))
скачал один - CommView, вроде как все показивает, но одна проблема - нету фильтра, он показивает все и сразу и уследить за чем либо сложно а по логам лазить неудобно(
Поставь на ФФ файрбаг, не сниффер, но при загрузке ресурсов показывает структуру запросов и ответов.
 

dreamer

Member
в некотором роде удобно, но не то что мне надо мне надо тупой набор символов запроса, а тут все разложено какбе по полочкам...)))
Структура запрос/ответ точно такая:
Код:
GET url HTTP/1.1
Заголовок: значение
Заголовок: значение

тело
 

-DEN-

New Member
Народ нужен совет - написал прогу типа калькулятора, но так как нехочетсо каждый раз её грузить нужно сделать так чтобы возможно было запускать её с командной строки с параметрами в виде выражения. Так вот я немогу никак сделать так чтобы символы читались из строки, а не из стандартного входного потока, если чемто поможете буду очень благодарен.
#include <ctype.h> // isspace
#include <stdlib.h>
#include <stdio.h>
#include <setjmp.h>

jmp_buf g_env;
double g_vars['z' - 'a' + 1];
const char* g_s;

#define SPACES(s) while(isspace(*s)) ++s;

double statement(); // fwd

void expect(char expected, char c)
{
if (c == expected) return;
printf("Unexpected \'%c\'\n", c);
longjmp(g_env, -1);
}

double term()
{
double ret;
char* tmp;
SPACES(g_s);
if (*g_s >= 'a' && *g_s <= 'z')
return g_vars[*g_s++ - 'a'];
if (*g_s == '(') {
++g_s;
ret = statement();
SPACES(g_s);
expect(')', *g_s++);
return ret;
}
ret = strtod(g_s, &tmp);
if (tmp == g_s) expect('0', *tmp);
g_s = tmp;
return ret;
}

double subexpr()
{
double ret = term();
while (1) {
SPACES(g_s);
if (*g_s == '*') ++g_s, ret *= term();
else if (*g_s == '/') ++g_s, ret /= term();
else return ret;
}
}

double expr()
{
double ret = subexpr();
while(1) {
SPACES(g_s);
if (*g_s == '+') ++g_s, ret += subexpr();
else if (*g_s == '-') ++g_s, ret -= subexpr();
else return ret;
}
}

double assign()
{
const char* tmp;
unsigned idx;
SPACES(g_s);
if (*g_s >= 'a' && *g_s <= 'z') {
tmp = g_s + 1;
SPACES(tmp);
if (*tmp == '=') {
idx = *g_s - 'a';
g_s = tmp + 1;
return g_vars[idx] = assign();
}
}
return expr();
}

double statement()
{
double ret;
while(1) {
ret = assign();
SPACES(g_s);
if (*g_s != ',') return ret;
++g_s;
}
}

int main()
{
char buf[1024];
double ret;
setjmp(g_env);
while(1) {
g_s = gets(buf);
ret = statement();
expect('\0', *g_s);
printf("%g\n", ret);
}
return 0;
}
 

Cris

Member
я б помог, но немогу понять и найти в инете как считывать данные которые приходят в качестве параметра, в паскале там есть функция которая возврашает параметр отделенный пробелом с какимно номером, а в С++ как это делать?
и что вот это - setjmp(g_env);, я в инете почитал чтото про длинный переход и т.д но мало что понял)
 

dreamer

Member
параметры командной строки передаются в функцию мейн
точно названий не помню ... их вроде два... одни масив параметров второй изх каличиство
вообшем копай в этом направлении
Научитесь наконец поиском пользоваться!!!
 
Зверху