Netstring - Netstring

I dataprogrammering er en nettstreng en formateringsmetode for byte-strenger som bruker en deklarativ notasjon for å indikere størrelsen på strengen.

Netstrings lagrer bytelengden på dataene som følger, noe som gjør det lettere å entydig sende tekst- og byte-data mellom programmer som kan være følsomme for verdier som kan tolkes som avgrensere eller terminatorer (for eksempel et nulltegn ).

Formatet består av strengens lengde skrevet med ASCII-sifre, etterfulgt av et kolon, byte-dataene og komma. "Lengde" i denne sammenhengen betyr "antall 8-bits enheter", så hvis strengen for eksempel er kodet med UTF-8 , kan dette være eller ikke være identisk med antallet teksttegn som er til stede i strengen .

For eksempel teksten "hei verden!" koder som:

<31 32 3a 68 65 6c 6c 6f 20 77 6f 72 6c 64 21 2c>

dvs

12:hello world!,

Og en tom streng som:

<30 3a 2c>

dvs

0:,

Komma gjør det litt enklere for mennesker å lese nettstrenger som brukes som tilstøtende poster, og gir svak bekreftelse av riktig parsing. Merk at uten komma speiler formatet hvordan Bencode koder for strenger.

Lengden er skrevet uten ledende nuller. Tom streng er den eneste nettstrengen som begynner med null.

Siden formatet er enkelt å generere og parse , er det enkelt å støtte av programmer skrevet på forskjellige programmeringsspråk. I praksis blir ofte nettstrenger brukt for å forenkle utveksling av bytestringer, eller lister med bytestrings. Se for eksempel bruken i Simple Common Gateway Interface (SCGI) og Quick Mail Queuing Protocol (QMQP).

Netstrings unngår komplikasjoner som oppstår når du prøver å legge inn vilkårlige data i avgrensede formater. For eksempel kan det hende at XML ikke inneholder visse byteverdier og krever en ikke-privat kombinasjon av rømming og avgrensning , mens generering av MART-meldinger med flere deler innebærer å velge en avgrenser som ikke må kollidere med innholdet i dataene.

Netstrings kan lagres rekursivt. Resultatet av å kode en sekvens med strenger er en enkelt streng. Omskriving av ovennevnte "hei verden!" eksempel for å i stedet være en sekvens av to nettstrenger, selv kodet som en enkelt nettstreng, gir følgende:

17:5:hello,6:world!,,

Parsing av en slik nestet netstreng er et eksempel på masking av and , siden den inneholdte strengen ("5: hallo, 6: verden !,") både er en streng og en sekvens av nettstrenger. Den effektive typen bestemmes av hvordan applikasjonen velger å tolke den, ikke av noen eksplisitte typedeklarasjon som kreves av nettstrengspesifikasjonen. Imidlertid kan en applikasjon bruke en merket fagforeningskonvensjon for å beskrive typer nestede nettstrenger, og derved etablere et selvbeskrivende hierarkisk format.

Merk at siden netstrings ikke har noen begrensninger for innholdet i dataene de lagrer, kan ikke nettstrenger være innebygd ordrett i de fleste avgrensede formater uten mulighet til å forstyrre avgrensningen av det inneholder formatet.

I forbindelse med nettverksprogrammering er det potensielt nyttig at mottaksprogrammet blir informert om størrelsen på dataene som følger, ettersom det kan tildele nøyaktig nok minne, unngå behovet for omdisponering for å få plass til mer data og forhåndsdømme data som vil overskride størrelsesgrenser.

Se også

Merknader og referanser

Eksterne linker