Zabbix Documentation 5.0

3.04.05.0 (current)| In development:5.2 (devel)| Unsupported:1.82.02.22.43.23.44.24.4Guidelines

User Tools

Site Tools


ru:manual:appendix:protocols:header_datalen

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
ru:manual:appendix:protocols:header_datalen [2018/06/26 06:31]
127.0.0.1 external edit
ru:manual:appendix:protocols:header_datalen [2019/10/07 06:35] (current)
Line 11: Line 11:
  
 Чтобы не израсходовать память полностью (в теории) Zabbix протокол ограничен на прием данных только 128МБ за одно соединение. Чтобы не израсходовать память полностью (в теории) Zabbix протокол ограничен на прием данных только 128МБ за одно соединение.
 +
 +=== Реализация ===
 +
 +Здесь представлены выдержки кода, которые показывают как добавить заголовок Zabbix протокола к ''​data'',​ которые вы //​хотите//​ отправить,​ чтобы получить ''​packet''​ вам //​необходимо//​ отправлять на Zabbix, так чтобы он интерпретировался корректным образом.
 +
 +^Язык^Код^
 +|bash|<​code bash>
 +printf -v LENGTH '​%016x'​ "​${#​DATA}"​
 +PACK=""​
 +for i in {14..0..-2};​ do PACK="​$PACK\\x${LENGTH:​$i:​2}";​ done
 +printf "​ZBXD\1$PACK%s"​ $DATA
 +</​code>​|
 +|Java|<​code Java>
 +byte[] header = new byte[] {
 + '​Z',​ '​B',​ '​X',​ '​D',​ '​\1',​
 + (byte)(data.length & 0xFF),
 + (byte)((data.length >> 8) & 0xFF),
 + (byte)((data.length >> 16) & 0xFF),
 + (byte)((data.length >> 24) & 0xFF),
 + '​\0',​ '​\0',​ '​\0',​ '​\0'​};​
 +
 +byte[] packet = new byte[header.length + data.length];​
 +System.arraycopy(header,​ 0, packet, 0, header.length);​
 +System.arraycopy(data,​ 0, packet, header.length,​ data.length);​
 +</​code>​|
 +|PHP|<​code PHP>
 +$packet = "​ZBXD\1"​ . pack('​P',​ strlen($data)) . $data;
 +</​code>​ или <code PHP>
 +$packet = "​ZBXD\1"​ . pack('​V',​ strlen($data)) . "​\0\0\0\0"​ . $data;
 +</​code>​|
 +|Perl|<​code Perl>
 +my $packet = "​ZBXD\1"​ . pack('<​Q',​ length($data)) . $data;
 +</​code>​или<​code Perl>
 +my $packet = "​ZBXD\1"​ . pack('​V',​ length($data)) . "​\0\0\0\0"​ . $data;
 +</​code>​|
 +|Python|<​code Python>
 +packet = "​ZBXD\1"​ + struct.pack('<​Q',​ len(data)) + data
 +</​code>​|
 +