Kant #9861 Posted January 20 Rilay написал 6 минут назад: Kant написал 44 минуты назад: итого в первых 8 байтах всегда длина некст пакета и че? ну я же супер подробно все описал пакет то состоит из двух пакетов в первых 8 длина пакета первого в длине пакета + 7 байт длина второго, А ИЗ ЗА ТОГО ЧТО ДЛИНА ПЕРВОГО МОЖЕТ БЫТЬ РАЗНОЙ МЫ НЕ МОЖЕМ ПРОСТО СДЕЛАТЬ request[7] + реквест[118] например поэтому и получается ебаная формула request[7]+request[request[7]+19]+24) я не пойму что вы хотите то Я БЕРУ ЭТИ ДВА БАЙТА СКЛАДЫВАЮ ИХ, СКЛАДЫВАЮ НЕУЧТЕННЫЕ 24 БАЙТА И ПОЛУЧАЮ ДЛИНУ ПАКЕТА КОТОРАЯ ЗАПИСАНА В ПАКЕТЕ И СРАВНИВАЮ С ПОЛУЧЕННОЙ ????????????????????????? если вы все еще про структуру, то пакет с длиной 155 может иметь дату на request [26:34] время на request[34:40] а может быть дата request[25:33], а время request[33:40] структура ето первое что бы я сделал, если бы длина пакетов была фиксированной нет, ты максимально непонятно описываешь у тебя бинарный протокол, который сообщает длину пакета я хуй знает что у тебя там за сдвоенные пакеты, но ты сам же пишешь, что приходит длина обоих в чем проблема отрезать пришедшие байты и запихнуть их в структуру нужную, если это разные типы пакетов небось где-то и написано должно быть, что за типы пакетов хуйня которая тебе это отсылает же тоже не генерит просто рандомной длины пакеты, ей че заниматься нечем Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Share this post Link to post
Rilay #9862 Posted January 20 (edited) Kant написал 19 минут назад: что у тебя там за сдвоенные пакеты, но ты сам же пишешь, что приходит длина обоих сдвоенный просто пакет вместе с пакетом друг за другом но не в том смысле что он выглядит как 7пустых байт, байт с ОБЩЕЙ длиной, потом инфа первого пакета + второго пакета, потом 4 байта срс16 а выглядит как 7пустых байт, байт с длиной ПЕРВОГО ПАКЕТА, потом инфа с первого пакета, потом 4 байта срс16, потом 7пустых байт, байт с длиной ВТОРОГО ПАКЕТА, потом инфа со второго пакета, потом 4 байта срс16 Kant написал 19 минут назад: в чем проблема отрезать пришедшие байты и запихнуть их в структуру нужную ну разная блять длина пакета с координатами может быть понимаешь??????????????????????????? видишь 154 а тут 153 знаешь почему а потому что не 04 а 4 как ты запихнешь структуру если длина полей разная может быть я не могу сделать поле стракта типа time [8]byte потому что в 12:53:56 оно будет [8] а в 0:0:0 будет [5] скорось тоже может быть [1]byte может быть [2] может хоть [13131] так же как и alt, dir etc прочтите что я пишу хотя бы ну я одно и то же уже третий раз пишу ДЛИНА РАЗНАЯ НЕ У РАЗНЫХ ТИПОВ ПАКЕТОВ А У ОДНИХ И ТЕХ ЖЕ ПОНИМАЕТЕ Edited January 20 by Rilay Лучший юзер — Rilay Share this post Link to post
suez #9863 Posted January 21 https://dtf.ru/flood/1044371-zlost-kak-smysl-zhizni-dtf-ru-zasvetilsya-v-tope-saytov-s-agressivnym-kontentom ГОРЖУСЬ ПРОДОТОЙ И РЕГОЙ С 2008 m()stEVIL, DeadMage, besteady and 5 others like this http://codepen.io/suez/ - they see me bydlocoding, they hatin. Share this post Link to post
Rilay #9864 Posted January 21 забыл добавить что в итоге то я режу строку и запихиваю в стракт че думаете если б можно было просто ну ебнуть стракт, я бы не ебнул или че Лучший юзер — Rilay Share this post Link to post
Vova #9865 Posted January 21 (edited) Бля прочел эту статью и сразу вспомнил о челе на которого вы тут молитесь Данечка или как там его Который обосрал Гугл за то что его не промоутнули с L3 + якобы заморозили трансфер в США (забавно потому что внутренний трансфер в Гугле вообще начинается с L4) и радостно свалил в Фейсбук Такая вот инфуша что Фейсбук обосрался с иммиграцией и не может оформить гринку зато они теперь нанимают дохуя в Европе Так что удачи подаваться https://www.justice.gov/opa/pr/justice-labor-departments-reach-settlements-facebook-resolving-claims-discrimination-against Edited January 21 by Vova Share this post Link to post
DeadMage #9866 Posted January 21 (edited) @suez когда кулстори будут, уже давно не было @Rilay ты можешь сделать структуру на заголовок, у которого фиксированная длина: Судя по тому что ты написал про "сдвоенный пакет" это просто когда тебе два пакета прилетает, а ты их считываешь в один буфер. Это симптом того что ты "неправильно" считываешь, если я правильно помню, то по байту пока считывается, то есть все что клиент прислал тебе на текущий момент. Потом тебе это снова нужно разбивать на пакеты. "Правильный" способ это всегда считывать заголовок (который фиксированного размера), можно сразу в структуру. Потом оттуда брать длину и считывать в другой буфер остаток пакета (длина + 5 байт в этом формате). Тогда "склеенные" пакеты у тебя исчезнут, потому что ты будешь их по одному обрабатывать. Правильно-неправильно в кавычках, потому как и твой способ может быть норм в некоторых случаях, но тебе это не надо. Еще парсинг самого контента (строки) у тебя полагается на порядок полей (сначала Alt, потом Speed и тд), я бы на твоем месте на это не рассчитывал, если в доках не зафиксирован порядок. Edited January 21 by DeadMage Share this post Link to post
Rilay #9867 Posted January 21 DeadMage написал 5 минут назад: Еще парсинг самого контента (строки) у тебя полагается на порядок полей (сначала Alt, потом Speed и тд), я бы на твоем месте на это не рассчитывал, если в доках не зафиксирован порядок. зафиксирован DeadMage написал 7 минут назад: ты можешь сделать структуру на заголовок, у которого фиксированная длина это то я знаю, только какая разница считаю ли я в структуру заголовок, и возьму отттуда struct.Length, или просто возьму request[7] просто мне эта длина ничего не даст же, максимум сверить пришел ли полный пакет или нет я же не могу сделать заготовку стракта под данные если длина не фиксированная Лучший юзер — Rilay Share this post Link to post
DeadMage #9868 Posted January 21 (edited) Rilay написал 26 минут назад: это то я знаю, только какая разница считаю ли я в структуру заголовок, и возьму отттуда struct.Length, или просто возьму request[7] просто мне эта длина ничего не даст же, максимум сверить пришел ли полный пакет или нет я же не могу сделать заготовку стракта под данные если длина не фиксированная Длина тебе даст знать сколько тебе байт нужно прочитать. Если данных много, они могут не влезть в один TCP пакет - он будет разбит на несколько, и твой request.len может быть меньше чем struct.Length. Это не значит что тебе прислали битый пакет, ты просто недопрочитал данные из сокета. Делаешь так кароче (псевдокод): conn.Read(header, sizeof(header)); data = new byte[header.length]; conn.Read(data, header.length); conn.Read(footer, 5); // 1 byte + 4 bytes crc Преимущества: Избавляешься от request[7] - ты щас говоришь что это тоже самое что header.length, но это не так. Через год, когда будешь фиксить баги, будет проще увидеть .Length чем какой-то рандомный индекс 7 Обрабатываешь все пакеты правльно, в не зависимости от разбиения их на уровне TCP Нет "склееных" пакетов Edited January 21 by DeadMage Share this post Link to post
Rilay #9869 Posted January 21 DeadMage написал 44 минуты назад: Судя по тому что ты написал про "сдвоенный пакет" это просто когда тебе два пакета прилетает, а ты их считываешь в один буфер. Это симптом того что ты "неправильно" считываешь, не совсем так я отправляю два запроса, гетгпс гетио получаю два пакета как бы а читаю я их вот так щас Показать содержимое request := make([]byte, 1024) recv_len, err := conn.Read(request) мне просто надо было (по заданию) разделить функцию чтения с сокета и функцию парсинга то есть функция чтения, проверяет полученный пакет(ы) на целостность, и уже передает на парсинг вот я читаю как под хайдом, проверяю длину, и передаю уже в функцию где как бы лишнее обрезается уже Лучший юзер — Rilay Share this post Link to post
DeadMage #9870 Posted January 21 Rilay написал 37 минут назад: не совсем так я отправляю два запроса, гетгпс гетио получаю два пакета как бы А завтра надо будет 3 запроса отправлять, придется ифы все фиксить опять. Будешь обрабатывать один пакет за раз - ничего менять не над будет. Rilay написал 38 минут назад: мне просто надо было (по заданию) разделить функцию чтения с сокета и функцию парсинга то есть функция чтения, проверяет полученный пакет(ы) на целостность, и уже передает на парсинг вот я читаю как под хайдом, проверяю длину, и передаю уже в функцию где как бы лишнее обрезается уже Если это прям так надо, сделай структуру Request { Header header; []byte data; Footer footer; } Заполняй её там где читаешь из сокета, а парси data (и если что-то надо из хедера) в другой функции куда эти Request'ы будешь передавать. То как ты читаешь работает только потому что у тебя нет фрагментации из-за размера пакетов. Как только у тебя появится пакет больше чем MTU, в буфере у тебя может оказаться, например, половина или полтора пакета. Это можно обрабатывать, конечно, но проще читать по одному пакету из сокета. Share this post Link to post
GoldRobot #9871 Posted January 21 Я вообще за вашим разговором не слежу конечно, но DeadMage написал 11 минут назад: Это можно обрабатывать, конечно, но проще читать по одному пакету из сокета. А кто сказал что у тебя одно сообщение/реквест вообще соответствует одному пакету? ward написал 04.01.2022 в 02:54: Hades для стада долбоебичей которые прокликивали Дэш и думали ебать они в артхаузнвй рогалик играют, не такие как все. mazt3r написал 20.09.2019 в 11:27: ласт оф ас - хуета для лисят и прочих мальчиков с вагиной между ног. Share this post Link to post
DeadMage #9872 Posted January 21 GoldRobot написал 2 минуты назад: Я вообще за вашим разговором не слежу конечно, но А кто сказал что у тебя одно сообщение/реквест вообще соответствует одному пакету? "Пакет" в нашем разговоре это не TCP пакет, а на уровне его протокола. И там да, один реквест/респонс это один "пакет". Это добавляет путаницы, но уже поздно и я хз как лучше тут все обозначать. Все равно до самих TCP пакетов добраться сложно, да и смысла нет, поэтому можно переиспользовать понятие на уровене выше GoldRobot likes this Share this post Link to post
Rilay #9873 Posted January 21 DeadMage написал 20 минут назад: Если это прям так надо, сделай структуру Request { Header header; []byte data; Footer footer; } Заполняй её там где читаешь из сокета, а парси data (и если что-то надо из хедера) в другой функции куда эти Request'ы будешь передавать. Хорошо, попробую так сделать Лучший юзер — Rilay Share this post Link to post
Standartenführer #9874 Posted January 21 пора набросить в топик: начал искать 2й завод, ниже 2.5 джастдуитов по старому курсу не предлагали вы чего еще не девпопсы? Share this post Link to post
Rilay #9875 Posted January 21 не знаю мне меньше всех тут платят (но учитывая мои навыки ето все еще переплата) Лучший юзер — Rilay Share this post Link to post
Standartenführer #9876 Posted January 21 если бы ты увидел мой код на го - пошел бы просить рейз сразу Share this post Link to post
madvlaydin #9877 Posted January 21 Standartenführer написал 22 минуты назад: пора набросить в топик: начал искать 2й завод, ниже 2.5 джастдуитов по старому курсу не предлагали вы чего еще не девпопсы? скрипточки и конфижки писать - супер еботня, сегодня на сраме в очередной раз программисты-олды на проекте ругались на новичков мол те не смотрят мерж реквесты; а изменения в конфигах сервисов или скриптах деплоя были названы лучшим снотворным ну и опять же, сидеть ебашить эти вонючие ямлы без средств дебага и тестирования - супер срань, земля пухом карочи Standartenführer likes this Share this post Link to post
prokol9 #9878 Posted January 22 хочу ворваться в ит, в разрабы. инфа с первой про то, что если хочешь джаву, то идти на джавараш актуальна? и норм ли, если брать подписку без менторства и чисто самому проходить их лвлы? смотрю еще ката академию (бывашие джава ментор), мб еще что посоветуете? Share this post Link to post
Kant #9879 Posted January 22 мозг и книжку почитать для начала GoldRobot likes this Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Share this post Link to post
prokol9 #9880 Posted January 22 (edited) дельный совет конечно какую? ну и если я 0 (чутка с++ пытался, на с# лайтовую программу для составления договоров (с реестром автоматическим) делал давно (7+ лет назад)), то в джаву норм вкатываться или лучше питоны и тп? Edited January 22 by prokol9 Share this post Link to post