äskettäin GNU-projekti julkaisi julkaisun kirjaston uusi versio libmicrohttpd 0.9.74, Edustaa yksinkertaista API:ta sovellusten sisäänrakennetuille HTTP-palvelintoiminnoille.
Kirjasto tukee HTTP 1.1 -protokollaa, TLS:ää, POST-pyyntöjen lisäkäsittelyä, perus- ja tiivistelmätodennus, IPv6, SHOUTcast ja erilaiset menetelmät yhteyksien multipleksointiin (select, poll, pthread, thread pool), tällä hetkellä toteutuksessa on tuki useille tuetuille alustoille, mukaan lukien GNU / Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android , macOS, Win32, Symbian ja z / OS.
GNU libmicrohttpd syntyi sen tekijän tarpeesta, joka tuolloin tarvitsi helpon tavan lisätä samanaikainen HTTP-palvelin muihin projekteihin. Nykyiset vaihtoehdot olivat ei-vapaita, ei-palautuvia, itsenäisiä, kauhealaatuisia koodia tai näiden yhdistelmä.
Ominaisuuksista jotka erottuvat tästä toteutuksesta:
- Kirjasto C: nopea ja pieni
- API on yksinkertainen, ilmeikäs ja täysin palaava.
- Toteutus on HTTP 1.1 -yhteensopiva
- HTTP-palvelin voi kuunnella useita portteja
- Useita ketjutustiloja: Suorita sovellussäikeessä, sisäisessä säikeessä, säikeryhmässä ja säikeessä yhteyskohtaisesti
- Kolme erilaista socket pollaustilaa: valitse (), poll () ja epoll
- Järjestelmäkutsujen vähimmäismäärä ylimääräisten ytimen/käyttäjätilan muutosten välttämiseksi
- Tuetut alustat ovat GNU / Linux, FreeBSD, OpenBSD, NetBSD, Android, Darwin (macOS), W32, OpenIndiana /
- Solaris ja z/OS
- Tuki IPv6: lle
- SHOUTcast-tuki
- Tuki POST-tietojen asteittaiselle käsittelylle (valinnainen)
- Perus- ja implisiittisen todennuksen tuki (valinnainen)
- TLS-tuki (vaatii libgnutls, valinnainen)
- Binaari on vain noin 32k (ilman TLS-tukea ja muita valinnaisia ominaisuuksia)
Libmicrohttpd 0.9.74:n tärkeimmät uudet ominaisuudet
Tästä kirjaston uudesta versiosta löydämme sen lisäsi WebSockets-protokollan kokeellisen toteutuksen, jota ei ole vielä testattu kunnolla ja se on oletuksena pois käytöstä.
Toinen uutuus, joka esitetään, on se HTTP 1.0 / 1.1 -protokollan toteutusmääritysten noudattamista parannettiinLisäksi koodia muokattiin uudelleen hajanaisten pyyntöjen purkamiseksi.
Se on myös korostettu lisätty koodi palauttamaan automaattisesti huonoihin ryhmiteltyihin pyyntöihin liittyvät virheet, liian suuri tietokoko ja virheellinen Content-Length-otsikkoasetus.
Se on toteutunut sisäiset optimoinnit, esimerkiksi parannettu muistinhallinta, parantunut hash-tehokkuus ja eliminoitu HTTP-menetelmän ja protokollaversion toistuva jäsennys.
Ja on myös huomattava, että HTTP-otsikkoarvojen tiukempi validointi tarjottiin, sallii sarkainmerkin käytön vastauksen otsikkoarvoissa, mutta kielsi välilyöntien käytön mukautetuissa otsikkoarvoissa.
Sen lisäksi koodi HTTP-otsikoiden luomiseksi vastauksena on kirjoitettu kokonaan uudelleen ja aikakatkaisun tarkkuutta on lisätty sekunneista millisekunteihin.
Lisätty koontivaihtoehto –enable-sanitizers [= osoite, määrittelemätön, vuoto, käyttäjän myrkky], joka mahdollistaa ongelmien havaitsemisen tilat valikoivasti koodissa.
Korjattu, selkeytetty, laajennettu ja parannettu Doxy-ominaisuuksien kuvaukset, joissa nyt mainitaan, että MHD:n oppimisen pitäisi olla paljon helpompaa pelkästään lukemalla otsikot.
Muista muutoksista, jotka erottuvat tässä uudessa versiossa:
- Parannetut toimintokuvaukset microhttpd.h-otsikkotiedostossa.
- API toimintoja lisätään MHD_get_reason_phrase_len_for () ja MHD_create_response_from_buffer_with_free_callback_cls (), MHD_CONNECTION_INFO_HTTP_STATUS lippu, MHD_get_connection_info (), sekä MHD_CONNECTION_INFO_HTTP_STATUS lippu vastauksia, ja MHD_SDRIVE_HDRFKE_HDR_HDRF_HDR_HDRF_HDRF_REND_HDRF_HDRF_REND_HDRF_HDR_RF_RF_HDR_RF_HDRF_ vastauksia.
- Lisätty projektitiedosto kokoonpanoa varten MSVC:ssä.
- Vastauksen otsikon muodostus kirjoitettiin kokonaan uudelleen. Uusi toteutus on kestävämpi, helpompi ylläpitää ja laajennettava, ja se noudattaa paremmin RFC HTTP-spesifikaatioita.
- Suorituskykyparannukset: Nyt HTTP-versio ja pyyntömenetelmä puretaan vain kerran (aiemmin MHD käytti monia merkkijonojen vertailua
Vihdoin jos olet kiinnostunut tietämään siitä lisää tästä julkaisusta voit tutustua sen verkkosivustolla oleviin käyttöoppaisiin ja muihin tietoihin.