Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

           Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
           И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - https://clck.ru/fCqwP

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2009, 22:08   #1
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию данные от браузера

Здравствуйте. Меня интересует вопрос... я создал программу, которая принимает данные, посылаемые на 80 порт... и отображаю их на экране... собственно, видно, что браузер посылает серверу... но вот проблема такая... посылая данные полей, методом POST, вроди бы все ок, и имена полей видно... но когда кто-то другой посылает, через Мозиллу, Оперу, или даже ИЕ, данные приходят, но не у всех последняя строка, где должны быть имена этих полей, видна. Хотя я сам посылаю, все видно. Те же люди посылали данные на ПхП файл, на готовый веб-сервер, там все ок, и поля приходили...

Кто-нибудь сталкивался с такой проблемой?

не думаю что проблема может быть в коде с сокетом, т.к в остальных проверенных случаях, все ок... посему ниже опишу, как я получаю данные...
Код:
...
char *data;
data = new char[10000];
int x = recv(client,data,10000,0);
cout<<data;
...
хотя на всякий случай выложу создание сокета и ожидание на входящие данные
Код:
WSAStartup(WS_VERSION_REQD, &stWSAData);
s1 = socket(AF_INET, SOCK_STREAM,0);
WSAAsyncSelect(s1,0,WM_ASYNC, FD_ACCEPT | FD_READ);
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_ANY);
addr.sin_port = htons (port);
bind(s1,(LPSOCKADDR)&addr,sizeof(struct sockaddr));
listen(s1,1);
lenaddr=sizeof(addr);
connection1=accept(s1,(LPSOCKADDR)&addr,&lenaddr);
Артэс вне форума Ответить с цитированием
Старый 05.12.2009, 03:33   #2
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Кто-нибудь догадывается, в чем может быть проблема?
Артэс вне форума Ответить с цитированием
Старый 05.12.2009, 14:10   #3
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

сравните длину полученной строки, с количеством полученных данных, если она меньше, то, возможно, в data содержится несколько строк, разделённых 0-м.
Код:
cout << x << ' ' << strlen(data);
...
netrino вне форума Ответить с цитированием
Старый 05.12.2009, 19:14   #4
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Одинаковые числа =\
Если кому-то не лень, попробуйте тоже написать просто прослушивание 80 порта, и отображение принимаемых данных... в основном такая проблема при приеме данных от Оперы или ФайрФокс... от ИЕ нормально, хотя от ИЕ от одного друга тоже не приходили поля...
помогите решить проблему пожалуйста
Артэс вне форума Ответить с цитированием
Старый 05.12.2009, 19:21   #5
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Может они их пучками шлют? ) То есть где-то в буфере ещё остались те самые строки?
Код:
int x = recv(client, data, 10000);
x = recv(client, &data[x], 10000-x);
...
?

Коли не то, то попробую у себя
netrino вне форума Ответить с цитированием
Старый 05.12.2009, 19:49   #6
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

ну я как делал... цикл написал, и выводил через cout<<data[a], увеличивая "а" на 1, пока 10000 не стало) вроди не нашел полей...

а попробовал предложенный способ, так не отображает... отобразит только если в браузере ESC нажать...
Код:
int x = recv(client,data,10000,0);
x = recv(client,&data[x],10000-x,0);
cout<<data;
Артэс вне форума Ответить с цитированием
Старый 07.12.2009, 18:43   #7
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

далеко ушла моя тема, а проблема все актуальна
Артэс вне форума Ответить с цитированием
Ответ

           Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
           Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хранение истории браузера Marsel737 Общие вопросы Delphi 9 10.05.2018 17:47
Запуск браузера в приложении MAcK Общие вопросы .NET 7 07.04.2009 06:07
IdHttp симуляция браузера Lion-Tiger Работа с сетью в Delphi 5 21.03.2009 17:50
Переместить ссылки из браузера AnalogXP Общие вопросы Delphi 6 11.03.2008 14:51
перехват ссылки из браузера Scorpeon Общие вопросы Delphi 6 21.06.2007 19:08