Вопрос конечно еще в силе, потому что я так и не понял что значит проблема с non-constant, или это относится к тому что секция - bss (тогда неясно почему пример из книги с ошибкой), либо к какой-то ошибке которую допустил я.
Если поменять строки таким образом: %assign a array -> %assign a 0 inc word [a] -> inc word [array + a]
, то работает
Lynn «Кофеман», C++
А как это у меня перепутан порядок байт (в http протоколе трекера работает нормально => SHA1 корректный)? Я использовал бустовую функцию для шифрования в SHA1, ничего сам не придумывал.
Lynn «Кофеман», ну int8_t - это 1 байт, я нигде и не писал вроде что у меня info_hash из int'ов состоит, но у торрентов, которые я сниферил info_hash был как будто из набора 4-х байтных чисел (в Big Endian формате). Я же по спецификации делал так, что просто передавал 20 байт этого SHA1 info_hash'а, но ответ от трекера был некорректным.
Евгений Шатунов, ну мне кажется что опытному пользователю asio достаточно будет взглянуть на код, чтобы ответить чего я не понял/сделал неправильно. И повторю еще раз, это искусственное воссоздание проблемы, программное замедление у меня из-за недостатка знаний, поэтому как мне кажется, вопрос я задал адекватно.
Евгений Шатунов, нет это не задание (я итак воссоздал ошибку локально на примере буста, сократить код сильнее не могу), мне нужно понять конкретно по коду в чем причина торможения. Ну и вроде как я догадался, проблема кажется в очень долгом timeout'е у async_connect'a (который вызывается после io_service::run), я почему-то ожидал что он куда-то делегирует операцию подключения, а сам выполнит лишь хэндлер когда сокет подключится. Но судя по всему я ошибался.
Вообщем я всё-таки разобрался с кодировками в C++ и осознал что тут вообще не нужно париться, std::string из коробки способен хранить UTF-8 строки (он не способен их использовать/ корректно модифицировать), а значит их можно без проблем передавать в алгоритм SHA-1!
ну то есть лучший исход - писать самому алгоритм SHA-1? Как-то это некрасиво выходит, про самописный каст к однобайтовому типу я уже всё перепробовал, и по LE и по BE. Я не знаю как понять какой SHA-1 верно закодировал фразу, только если смотреть в онлайн кодеры с которым у меня не сходится.
То есть внутри boost.asio есть какой-то свой планировщик (видимо в виде кода, поэтому хотелось бы понять как он называется чтобы глянуть исходники)? Или он работает на уровне ОС и заставляет ее думать что задачи в 2-х разных процессах?
Про операции типа receive, read и тп, мне казалось что от вызывающего кода вообще ничего не требуется, и он ожидает когда ОС закинет ему, что ей что-то пришло по этому порту. (ну периодически ложно просыпаясь и перепроверяя буфер)
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.