|
|
|
Как передать ноль в Blob
|
|||
|---|---|---|---|
|
#18+
Используя библиотеку и пример по работе с Winsock winsock32.pbl (ссылочку на которые мне любезно предоставили на этом Форуме) у меня появилась вот такая проблема. Как известно, в функции отправки данных на сокет - uf_senddata из этой библиотеки одним из аргументов является blob (в нем то и передаются данные). Я формирую сообщение в бинарном виде, отправляю. Сторона-приемник сообщает, что сообщение имеет неверный формат. А именно, в отправленном мной сообщении отсутствуют нули, там где они должны были быть. Это видно на простом примере. Скажем, нужно составить blob из значений 125, 0, 134. Чтобы составить такой blob я использую: blob lbl_data lbl_data = blob(char(123)+char(0)+char(125)) Если вывести lbl_data в messagebox messagebox("",string(lbl_data)) То будет получено {}, т.е. 0 как бы "проглотился". А он в сообщении нужен, это число. Подскажите, пожалуйста, как быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2006, 14:55 |
|
||
|
Как передать ноль в Blob
|
|||
|---|---|---|---|
|
#18+
А в каком формате должно быть сообщение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2006, 15:45 |
|
||
|
Как передать ноль в Blob
|
|||
|---|---|---|---|
|
#18+
Если нужен именно ноль то char(48) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2006, 16:44 |
|
||
|
Как передать ноль в Blob
|
|||
|---|---|---|---|
|
#18+
:) Известные "грабли". Воспользуйтесь функциями BlobEdit и BlobMid. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2006, 16:45 |
|
||
|
Как передать ноль в Blob
|
|||
|---|---|---|---|
|
#18+
RenesansЕсли вывести lbl_data в messagebox messagebox("", string (lbl_data)) вот этого делать нельзя ни в коем случае! про zero terminated string слышали? ИМХО, вместо BlobEdit лучше использовать RtlZeroMemory. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2006, 16:57 |
|
||
|
Как передать ноль в Blob
|
|||
|---|---|---|---|
|
#18+
Big Boo (В каком формате сообщение?) - я хочу сформировать TRAP сообщение в snmp (UDP) протоколе. Ленивка (Если нужен именно ноль то char(48)) - char(48) вставит в blob значение 48, а мне нужно 0 AndrewN (Воспользуйтесь функциями BlobEdit и BlobMid.) - Наверное, имеется в виду следующее - к имеющемуся blob-у с помощью blobedit добавить "нулевой" blob. Хорошо, но где взять этот самый нулевой блоб? Читать из файла не хочется. Зорин Андрей (вот этого делать нельзя ни в коем случае! про zero terminated string слышали?ИМХО, вместо BlobEdit лучше использовать RtlZeroMemory.) С замечанием согласен. По использованию RtlZeroMemory дополнительный вопрос - Для ее использования нужен указатель на blob-переменную. Как его получить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 08:30 |
|
||
|
Как передать ноль в Blob
|
|||
|---|---|---|---|
|
#18+
RenesansBig Boo (В каком формате сообщение?) - я хочу сформировать TRAP сообщение в snmp (UDP) протоколе. А если более детально? В нашем случае рассматриваем блоб просто как массив байт. Какой размер блоба? Какую информацию он должен содержать (побайтово)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 09:25 |
|
||
|
Как передать ноль в Blob
|
|||
|---|---|---|---|
|
#18+
snmp-уровень, привожу начало сообщения в 16-ричном формате 304502010004067075626с и т.д. 30 - точно не знаю xnj это такое, наверное это код snmp 45 - длина сообoения на этом уровне 02 - тип переменной (число) раздела версии протокола 01 - длина этой части 00 - номер версии (0) 04 - это тип переменной - string для community раздела 06 - длина 70 - это 'p' - первый символ от слова public 75 - u 62 - b 6c - l и так далее. Все расписывать не вижу смысла. Так вот, когда отправлется номер версии - 0, в отправляемом сообщении о пропадает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 10:07 |
|
||
|
Как передать ноль в Blob
|
|||
|---|---|---|---|
|
#18+
Q. Как получить blob содержащий \x00 ? A. Код: plaintext 1. 2. 3. 4. 5. А дальше не сложно за пару минут написать объектик, позволяющий например такое: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 12:27 |
|
||
|
Как передать ноль в Blob
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 12:49 |
|
||
|
Как передать ноль в Blob
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyQ. Как получить blob содержащий \x00 ? Код: plaintext 1. 2. 3. 4. 5. Хорошее решение. В билдере нет типа byte, а при попытке преобразования blob(string_var) нулевой символ съедается строкой. имхо действительно сообщение лучше формировать с помощью blobEdit ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 13:38 |
|
||
|
Как передать ноль в Blob
|
|||
|---|---|---|---|
|
#18+
Отлично! Анатолий Московский и Андрей Зорин, спасибо. Присланные вами рекомендации были ОЧЕНЬ полезные. Оба примера красивые, даже не знаю какой взять в проект! Но главное, сообщение удалось сформировать и оно корректно принялось другой стороной. Все. Это прорыв! Спасибо всем за участие. Андрей, Вам особенно благодарен, не перестаю восхищаться Вашими знаниями и опытом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 14:00 |
|
||
|
Как передать ноль в Blob
|
|||
|---|---|---|---|
|
#18+
RenesansОтлично! Анатолий Московский и Андрей Зорин, спасибо. Присланные вами рекомендации были ОЧЕНЬ полезные. Оба примера красивые, даже не знаю какой взять в проект! Но главное, сообщение удалось сформировать и оно корректно принялось другой стороной. Все. Это прорыв! Спасибо всем за участие. Андрей, Вам особенно благодарен, не перестаю восхищаться Вашими знаниями и опытом. BlobEdit и BlobMid сильно тормозят на больших блобах. скорее всего где-то внутри по ходу дела куски копируются. на небольших это незаметно, но на объемах в сотни килобайт - мегабайты разница может составлять сотни раз. погоняйте профайлер чтобы убедиться что лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 14:16 |
|
||
|
Как передать ноль в Blob
|
|||
|---|---|---|---|
|
#18+
В принципе, нолик записать можно еще и так: blobEdit(blobvar, position, char(0), EncodingANSI!) Проверял, вроде работает. Что касается скорости, то заголовок сообщения можно формировать с помощью BlobEdit (он все равно маленький ), а остальной баян текстовый подтащить из строки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 14:24 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=33710299&tid=1337798]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 364ms |

| 0 / 0 |
