Перейти к публикации
  • Сейчас на странице   Всего пользователей: 2   (0 пользователей, 2 гостя)

Rooster

Программирование[10]

Перепись  

313 пользователей проголосовало

У вас нет прав на голосование в этом опросе, или на просмотр результатов опроса. Пожалуйста, войдите или зарегистрируйтесь для голосования в опросе.

Рекомендованные сообщения

Rilay написал 6 минут назад:
Kant написал 44 минуты назад:

итого в первых 8 байтах всегда длина некст пакета и че?

 :vau:

ну я же супер подробно все описал

пакет то состоит из двух пакетов

в первых 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 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение
(изменено)
Kant написал 19 минут назад:

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

сдвоенный просто пакет вместе с пакетом друг за другом

но не в том смысле что он выглядит как 7пустых байт, байт с ОБЩЕЙ длиной, потом инфа первого пакета + второго пакета, потом 4 байта срс16

а выглядит как 7пустых байт, байт с длиной ПЕРВОГО ПАКЕТА, потом инфа с первого пакета, потом 4 байта срс16, потом 7пустых байт, байт с длиной ВТОРОГО ПАКЕТА, потом инфа со второго пакета, потом 4 байта срс16

 

Kant написал 19 минут назад:

в чем проблема отрезать пришедшие байты и запихнуть их в структуру нужную

ну разная блять длина пакета с координатами может быть понимаешь???????????????????????????

image.png.e011ba7b2eb879d857c8857e1b939fa2.png

видишь 154

image.png.9d908645337c92d5536b8a1598abba49.png

а тут 153

знаешь почему

а потому что  image.png.7e393337ea96f2164aefd6e4f9838006.png

 

не 04 а 4

как ты запихнешь структуру если длина полей разная может быть

я не могу сделать поле стракта типа time [8]byte

потому что в 12:53:56 оно будет [8]

а  в 0:0:0 будет [5]

скорось тоже может быть [1]byte может быть [2] может хоть [13131]

так же как и alt, dir etc

прочтите что я пишу хотя бы ну   я одно и то же уже третий раз пишу

 

ДЛИНА РАЗНАЯ НЕ У РАЗНЫХ ТИПОВ ПАКЕТОВ

А У ОДНИХ И ТЕХ ЖЕ ПОНИМАЕТЕ

 

 

 


Изменено пользователем Rilay

Лучший юзер — Rilay

 

Поделиться сообщением


Ссылка на сообщение
Drakonian, Arzanis, m()stEVIL и 5 другим понравилось это

userbar-53933.png

http://codepen.io/suez/ - they see me bydlocoding, they hatin.

Поделиться сообщением


Ссылка на сообщение

забыл добавить что в итоге то я режу строку и запихиваю в стракт

че думаете если б можно было просто ну ебнуть стракт, я бы не ебнул или че

image.png.e14d4cfa54c73690aa7456a1d591e814.png


Лучший юзер — Rilay

 

Поделиться сообщением


Ссылка на сообщение
(изменено)

Бля прочел эту статью и сразу вспомнил о челе на которого вы тут молитесь Данечка или как там его

 

Который обосрал Гугл за то что его не промоутнули с L3 + якобы заморозили трансфер в США (забавно потому что внутренний трансфер в Гугле вообще начинается с L4)

 

и радостно свалил в Фейсбук

 

Такая вот инфуша что Фейсбук обосрался с иммиграцией и не может оформить гринку зато они теперь нанимают дохуя в Европе Так что удачи подаваться

 

https://www.justice.gov/opa/pr/justice-labor-departments-reach-settlements-facebook-resolving-claims-discrimination-against


Изменено пользователем Vova

towBCf6.pngimage.png.6f88ac9ad688355eb803ba0b32e309ca.pngimage.png.c05354238865437022b3e4a97a835dbd.pngimage.png.0e8329f2b07e208ae8ef4e3f6878d126.png

 

 

 

Поделиться сообщением


Ссылка на сообщение
(изменено)

@suez когда кулстори будут, уже давно не было :BlessRNG:

@Rilay ты можешь сделать структуру на заголовок, у которого фиксированная длина:
image.png.1950d32a2bbcf923a3874c6fe333c505.png Судя по тому что ты написал про "сдвоенный пакет" это просто когда тебе два пакета прилетает, а ты их считываешь в один буфер. Это симптом того что ты "неправильно" считываешь, если я правильно помню, то по байту пока считывается, то есть все что клиент прислал тебе на текущий момент. Потом тебе это снова нужно разбивать на пакеты. "Правильный" способ это всегда считывать заголовок (который фиксированного размера), можно сразу в структуру. Потом оттуда брать длину и считывать в другой буфер остаток пакета (длина + 5 байт в этом формате). Тогда "склеенные" пакеты у тебя исчезнут, потому что ты будешь их по одному обрабатывать.
 

Правильно-неправильно в кавычках, потому как и твой способ может быть норм в некоторых случаях, но тебе это не надо.

Еще парсинг самого контента (строки) у тебя полагается на порядок полей (сначала Alt, потом Speed и тд), я бы на твоем месте на это не рассчитывал, если в доках не зафиксирован порядок.


Изменено пользователем DeadMage

Поделиться сообщением


Ссылка на сообщение
DeadMage написал 5 минут назад:

Еще парсинг самого контента (строки) у тебя полагается на порядок полей (сначала Alt, потом Speed и тд), я бы на твоем месте на это не рассчитывал, если в доках не зафиксирован порядок.

зафиксирован

 

DeadMage написал 7 минут назад:

ты можешь сделать структуру на заголовок, у которого фиксированная длина

это то я знаю, только какая разница считаю ли я в структуру заголовок, и возьму отттуда struct.Length, или просто возьму request[7]

просто мне эта длина ничего не даст же, максимум сверить пришел ли полный пакет или нет:hmm:

я же не могу сделать заготовку стракта под данные если длина не фиксированная


Лучший юзер — Rilay

 

Поделиться сообщением


Ссылка на сообщение
(изменено)
Rilay написал 26 минут назад:

это то я знаю, только какая разница считаю ли я в структуру заголовок, и возьму отттуда struct.Length, или просто возьму request[7]

просто мне эта длина ничего не даст же, максимум сверить пришел ли полный пакет или нет:hmm:

я же не могу сделать заготовку стракта под данные если длина не фиксированная

Длина тебе даст знать сколько тебе байт нужно прочитать. Если данных много, они могут не влезть в один 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
  • Нет "склееных" пакетов

Изменено пользователем DeadMage

Поделиться сообщением


Ссылка на сообщение
DeadMage написал 44 минуты назад:

Судя по тому что ты написал про "сдвоенный пакет" это просто когда тебе два пакета прилетает, а ты их считываешь в один буфер. Это симптом того что ты "неправильно" считываешь,

не совсем так

я отправляю два запроса, гетгпс гетио

получаю два пакета как бы

а читаю я их вот так щас 

  Показать содержимое

request := make([]byte, 1024)

recv_len, err := conn.Read(request)

мне просто надо было (по заданию) разделить функцию чтения с сокета и функцию парсинга

то есть функция чтения, проверяет полученный пакет(ы) на целостность, и уже передает на парсинг

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


Лучший юзер — Rilay

 

Поделиться сообщением


Ссылка на сообщение
Rilay написал 37 минут назад:

не совсем так

я отправляю два запроса, гетгпс гетио

получаю два пакета как бы

А завтра надо будет 3 запроса отправлять, придется ифы все фиксить опять. Будешь обрабатывать один пакет за раз - ничего менять не над будет.
 

Rilay написал 38 минут назад:

мне просто надо было (по заданию) разделить функцию чтения с сокета и функцию парсинга

то есть функция чтения, проверяет полученный пакет(ы) на целостность, и уже передает на парсинг

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

Если это прям так надо, сделай структуру
Request {
  Header header;
  []byte data;
  Footer footer;
}

Заполняй её там где читаешь из сокета, а парси data (и если что-то надо из хедера) в другой функции куда эти Request'ы будешь передавать.

То как ты читаешь работает только потому что у тебя нет фрагментации из-за размера пакетов. Как только у тебя появится пакет больше чем MTU, в буфере у тебя может оказаться, например, половина или полтора пакета. Это можно обрабатывать, конечно, но проще читать по одному пакету из сокета.

Поделиться сообщением


Ссылка на сообщение

Я вообще за вашим разговором не слежу конечно, но

DeadMage написал 11 минут назад:

Это можно обрабатывать, конечно, но проще читать по одному пакету из сокета.

А кто сказал что у тебя одно сообщение/реквест вообще соответствует одному пакету?


ward написал 04.01.2022 в 02:54:

Hades для стада долбоебичей которые прокликивали Дэш и думали ебать они в артхаузнвй рогалик играют, не такие как все.

mazt3r написал 20.09.2019 в 11:27:

ласт оф ас - хуета для лисят и прочих мальчиков с вагиной между ног.

 

Поделиться сообщением


Ссылка на сообщение
GoldRobot написал 2 минуты назад:

Я вообще за вашим разговором не слежу конечно, но

А кто сказал что у тебя одно сообщение/реквест вообще соответствует одному пакету?

"Пакет" в нашем разговоре это не TCP пакет, а на уровне его протокола. И там да, один реквест/респонс это один "пакет". Это добавляет путаницы, но уже поздно и я хз как лучше тут все обозначать. Все равно до самих TCP пакетов добраться сложно, да и смысла нет, поэтому можно переиспользовать понятие на уровене выше :honkler:

GoldRobot понравилось это

Поделиться сообщением


Ссылка на сообщение
DeadMage написал 20 минут назад:

Если это прям так надо, сделай структуру
Request {
  Header header;
  []byte data;
  Footer footer;
}

Заполняй её там где читаешь из сокета, а парси data (и если что-то надо из хедера) в другой функции куда эти Request'ы будешь передавать.

Хорошо, попробую так сделать :hmm:


Лучший юзер — Rilay

 

Поделиться сообщением


Ссылка на сообщение

пора набросить в топик:
начал искать 2й завод, ниже 2.5 джастдуитов по старому курсу не предлагали

вы чего еще не девпопсы?:chel:

Поделиться сообщением


Ссылка на сообщение

не знаю мне меньше всех тут платят (но учитывая мои навыки ето все еще переплата)


Лучший юзер — Rilay

 

Поделиться сообщением


Ссылка на сообщение

если бы ты увидел мой код на го - пошел бы просить рейз сразу

Поделиться сообщением


Ссылка на сообщение
Standartenführer написал 22 минуты назад:

пора набросить в топик:
начал искать 2й завод, ниже 2.5 джастдуитов по старому курсу не предлагали

вы чего еще не девпопсы?:chel:

скрипточки и конфижки писать - супер еботня, сегодня на сраме в очередной раз программисты-олды на проекте ругались на новичков мол те не смотрят мерж реквесты; а изменения в конфигах сервисов или скриптах деплоя были названы лучшим снотворным

 

 

ну и опять же, сидеть ебашить эти вонючие ямлы без средств дебага и тестирования - супер срань, земля пухом карочи

Standartenführer понравилось это

Поделиться сообщением


Ссылка на сообщение

хочу ворваться в ит, в разрабы.

инфа с первой про то, что если хочешь джаву, то идти на джавараш актуальна? и норм ли, если брать подписку без менторства и чисто самому проходить их лвлы?

смотрю еще ката академию (бывашие джава ментор), мб еще что посоветуете?

Поделиться сообщением


Ссылка на сообщение

мозг и книжку почитать для начала

GoldRobot понравилось это

Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение
(изменено)

дельный совет конечно

какую?

 

ну и если я 0 (чутка с++ пытался, на с# лайтовую программу для составления договоров (с реестром автоматическим) делал давно (7+ лет назад)), то в джаву норм вкатываться или лучше питоны и тп?


Изменено пользователем prokol9

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...