Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 1
Регистрация: 29.08.2015
Сообщений: 40

При работе с указателями на сервер отправляется мусор, но выводит в консоль норм данные

09.01.2017, 18:40. Показов 2704. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый!
Отправляю на сервер разные штуки и на снифер это ловлю, вот что получается:
C++
1
char buf[] = "AAABBB";
на снифере AAABBB - верно

C++
1
char* buf = "AAABBB";
на снифере ..@... - неверно

C++
1
2
3
4
5
6
7
8
char* buf = new char[10];
    buf[0] = 'A';
    buf[1] = 'A';
    buf[2] = 'A';
    buf[3] = 'B';
    buf[4] = 'B';
    buf[5] = 'B';
    buf[6] = 0;
на снифере - мусор
Есть идеи/ответы почему так происходит?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.01.2017, 18:40
Ответы с готовыми решениями:

Tcp ip клиент-сервер C++ сервер выводит мусор
server # include <sys/types.h> # include <iostream> # include <winsock2.h> # include <stdlib.h> # pragma comment (lib,...

При выводе массива, выводит мусор
Програмка генератор паролей! #include<iostream> #include<time.h> #include<conio.h> using namespace std; void...

Ошибка при работе с указателями
Дан вот такой кусок кода: #include <stdio.h> int main() { char mas; scanf("%s",mas); char **pos; ...

26
 Аватар для Nishen
1359 / 857 / 366
Регистрация: 26.02.2015
Сообщений: 3,831
10.01.2017, 09:30
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от DrOffset Посмотреть сообщение
разобраться в разнице между массивами и указателями.
А в чем разница?
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
10.01.2017, 10:22
Цитата Сообщение от Nishen Посмотреть сообщение
А в чем разница?
В типах разница.
Тип "массив" приводится к типу "указатель" неявно. Но это не означает, что у этих типов одинаковые свойства.
Лакмусовая бумажка для проверки понимания этой темы: если человек сможет объяснить почему массив int a[2][2]; не может быть приведен к int **, значит он понимает в чем эти свойства заключаются.

Кликните здесь для просмотра всего текста
2
 Аватар для Nishen
1359 / 857 / 366
Регистрация: 26.02.2015
Сообщений: 3,831
10.01.2017, 11:21
Цитата Сообщение от DrOffset Посмотреть сообщение
значит он понимает в чем эти свойства заключаются.
Значит это я. Пойду разбираться. Спасибо за ссылку.

Добавлено через 54 минуты
Как оказалось, для меня эта тема вообще темный лес. Мне даже не понятен синтаксис

C++
1
int (*x)[5];
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
10.01.2017, 14:09
Цитата Сообщение от DrOffset Посмотреть сообщение
Не, там это будет компилироваться, потому что posix вариант send принимает void *, а не char *.
Но это нисколько не изменяет положения вещей, насчет того, что отправлялось значение указателя.
Понятно, этого не знал.
Цитата Сообщение от DrOffset Посмотреть сообщение
Если все еще непонятно о чем мы с nd2 говорим, то наверное стоит еще раз перечитать учебник про указатели и массивы.
Скорее всего, это я не правильно понимаю, как работает именно функция send(), надо с ней разобраться. Shakior правильно мне писал, что здесь есть две передачи (отправления): в функцию и на сервер.
Цитата Сообщение от Shakior Посмотреть сообщение
Он говорил не про отправлял в функцию, а про отправлял на сервер
А я говорил о функции, которая просто принимает указатель на char. Для уточнения:
C++
1
2
3
4
5
6
void f(void* str)
{}
//...
char* buf = "asdf";
f(buf); // передаётся значение указателя buf
f(&buf); // передаётся адрес уазателя buf
Коментарии правильны?
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
10.01.2017, 14:43
Цитата Сообщение от nd2 Посмотреть сообщение
Скорее всего, это я не правильно понимаю, как работает именно функция send(), надо с ней разобраться. Shakior правильно мне писал, что здесь есть две передачи (отправления): в функцию и на сервер.
Заменим send на memcpy - суть не поменяется.
В функцию передается адрес того, что нужно отправить (скопировать).

Т.е. если мы передали в функцию адрес указателя, то отправлено будет его значение, т.е. адрес, который в указателе содержится. Я об этом сразу и написал.
А чтобы отправить то, на что указатель указывает, то его и надо сразу передавать, без всяких взятий адреса.

Цитата Сообщение от nd2 Посмотреть сообщение
Коментарии правильны?
Да.

Добавлено через 5 минут
Причем отправлен будет адрес указателя + какой-то мусор со стека потому, что strlen-то был вызван для правильного указателя (см #3), честно посчитал длину, например 6. Если платформа 32-битная, то адрес занимает 4 байта, и это на 2 байта меньше, чем мы указали в send (strlen вернул 6). Значит будет захвачено еще два байта за пределамами указателя, которые и будут являться тем самым мусором, который наблюдал ТС.
1
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
10.01.2017, 16:21
Цитата Сообщение от DrOffset Посмотреть сообщение
Причем отправлен будет адрес указателя + какой-то мусор со стека потому, что strlen-то был вызван для правильного указателя (см #3), честно посчитал длину, например 6. Если платформа 32-битная, то адрес занимает 4 байта, и это на 2 байта меньше, чем мы указали в send (strlen вернул 6). Значит будет захвачено еще два байта за пределамами указателя, которые и будут являться тем самым мусором, который наблюдал ТС.
Об этом и я писал в 6 посте.
Цитата Сообщение от DrOffset Посмотреть сообщение
Я об этом сразу и написал.
Ты-то написал:
Цитата Сообщение от DrOffset Посмотреть сообщение
Отправлялось, внезапно, значение указателя
, да я, почему-то (?), это понял, как отправление в функцию:
Цитата Сообщение от nd2 Посмотреть сообщение
Разве значение указателя, а не адрес самого уазателя?
C++
1
&buf
На что мне ТС (поняв мою ошибку) справедливо и заметил:
Цитата Сообщение от Shakior Посмотреть сообщение
Он говорил не про отправлял в функцию, а про отправлял на сервер
А вот здесь я уже откровенную чушь написал, за что приношу глубокие извинения:
Цитата Сообщение от nd2 Посмотреть сообщение
Что в функцию, то и на сервер. Разве может быть по другому?
Как раз таки, в функцию адрес, а на сервер данные по этому адресу.
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
10.01.2017, 17:10
Цитата Сообщение от nd2 Посмотреть сообщение
да я, почему-то (?), это понял, как отправление в функцию
В итоге все примерно говорили об одном и том же, но разными словами
Но да, я тогда писал об отправке на сервер, потому что отвечал на вопрос в контексте поста ТС, который о ней и говорил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.01.2017, 17:10

Выводит мусор при отображении цифр по указателю
Здравствуйте, нужно срочно помочь, ввожу программу а вместе цифр выдает "мусор", как исправить правильно программу? #include...

При добавлении студента, сбивается вся структура, и при выводе всего списка студентов, выводит какой то мусор
Суть действий: При добавлении студента, сбивается вся структура, и при выводе всего списка студентов, выводит какой то мусор. Раньше я...

Что не так при работе с указателями?
Здравствуйте! Начинаю изучать работу с указателями. #include <iostream> using namespace std; int fun(int a, int b, long...

Как избавиться от * и . при работе с указателями?
Сразу приведу пример: #include <stdio.h> struct struct5 { int* value; }; struct struct4 { struct5* s5; };

В консоль выводит данные ошибки
Скажите пожалуйста, о чем эти ошибки говорят и как решить проблему с их появлением? 1) CommandInvokationFailure: Unable to list...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru