ΠΡΠΎΠ΅ΠΊΡ GNU ΠΎΠ±ΡΠ²ΠΈ ΠΏΡΡΠΊ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° libmicrohttpd 0.9.77, ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΏΡΠΎΡΡ API Π·Π° Π²Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π½Π° HTTP ΡΡΡΠ²ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ Π²ΠΊΠ»ΡΡΠ²Π°Ρ: GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android, macOS, Win32 ΠΈ z/OS. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· LGPL 2.1+. Π ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈΡ Π²ΠΈΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π·Π°Π΅ΠΌΠ° ΠΎΠΊΠΎΠ»ΠΎ 32 ΠΠ.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΏΡΠΎΡΠΎΠΊΠΎΠ» HTTP 1.1, TLS, ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° POST Π·Π°ΡΠ²ΠΊΠΈ, ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΈ digest Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, IPv6, SHOUTcast, ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΠΌΡΠ»ΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΡΠ·ΠΊΠΈ (select, poll, epoll) ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠ» ΠΎΡ Π½ΠΈΡΠΊΠΈ ΠΈΠ»ΠΈ Π½ΠΈΡΠΊΠ° Π½Π° Π²ΡΡΠ·ΠΊΠ°). ΠΠ° Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅, Π²ΡΠ·Π½ΠΈΠΊΠ²Π°ΡΠΈ ΠΏΡΠΈ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΄ΡΠΎΡΠΎ ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ, Π±ΡΠΎΡΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ ΠΏΠΎΠ²ΠΈΡΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π΅ ΡΠ²Π΅Π΄Π΅Π½ΠΎ Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ.
ΠΠ°ΠΉ-Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅Π»Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ:
- Π API Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π½ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΡ MHD_get_version_bin() Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π² ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½ ΡΠΎΡΠΌΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 0x00097701).
- ΠΡΠ² ΡΠΎΡΠΌΠ°ΡΠ°, ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ°Π½Π° Π² RFC, ΡΠ° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈΡΠ΅ Π½Π° Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° digest Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ (βMD5β / βSHA-256β Π²ΠΌΠ΅ΡΡΠΎ βmd5β / βsha-256β).
- ΠΠΎΠ΄ΡΡ Π·Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π² Base64 ΡΠΎΡΠΌΠ°Ρ Π΅ ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ°Π½, Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π·Π° ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΎΡΡ Π½Π° Π²Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π² Base64 ΡΠΎΡΠΌΠ°Ρ Π΅ ΡΡΠΈΠ»Π΅Π½Π°.
- ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π·Π° ΠΊΡΠΎΡ-ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ, ΠΏΠΎΠ²ΠΈΡΠ΅Π½Π° Π΅ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΠ° Ρ POSIX ΠΈ Π½ΠΎΠ²ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈΡΠ΅.
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π²ΡΡΡΠ΅ΡΠ½ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Base64, Basic Auth ΠΈ ΡΠ²ΠΈΡΠΈ Π΄ΡΠ»Π³ΠΈ HTTP Π·Π°Π³Π»Π°Π²ΠΈΡ.
- Π ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΎΠ±Π½ΠΎΠ²Π΅Π½ API Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° libcurl, Π·Π° Π΄Π° ΡΠ΅ ΡΠΊΡΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈ VC (Visual C) ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠΈ ARM ΠΈ ARM64.
- ΠΡΡΠΊΠ° ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ, Π²ΡΡΠ½Π°ΡΠ° ΠΎΡ callback ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅, ΡΠ΅Π³Π° ΡΠ΅ ΡΡΠ»ΠΊΡΠ²Π° ΠΊΠ°ΡΠΎ Π³ΡΠ΅ΡΠΊΠ° (ΠΏΠΎ-ΡΠ°Π½ΠΎ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»Π½ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠ΅ ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ, ΠΌΠΎΠΆΠ΅Ρ Π° Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π°Ρ Π΄ΠΎ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅).
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΠ°ΠΊΡΠΎΡΠ° Π½Π° ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ° βDEBUGβ (ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Π° Π½Π° ΠΌΠ°ΠΊΡΠΎΡΠ° β_DEBUGβ).
- ΠΠΎΡΠΈΠ³ΠΈΡΠ°Π½ΠΈ ΡΠ° Π½Π°ΡΡΡΠΏΠ°Π½ΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
