Wêrom't in C-struktuer in minne SOCKS-fersiken meitsje kin
Besjoch eksplisite fjildbreedtes, byte-oarder en stream-I/O ynstee fan de yndieling fan de kompiler te behanneljen as it wire-formaat.
In jildich proxy-adres makket in hânskreaun SOCKS-berjocht net jildich. It stjoeren fan in C- of C++-struktuer kin opfolje of hieltallen yn hostoarder stjoere dy't it protokol nea frege hat.
Foar in SOCKS5 CONNECT-fersyk mei domeinnamme, serialisearje dizze folchoarder eksplisyt nei de metoade-ûnderhanneling en alle keazen autentikaasje:
- Ferzje, opdracht, reservearre byte en adrestype
- Domeinlingte en domeinbytes
- De twa-byte bestimmingspoarte yn netwurk-byte-oarder
Adreslingtes hingje ôf fan de SOCKS-ferzje en it adrestype. Numerike fjilden fan fêste breedte hawwe har spesifisearre foarstelling nedich; domeinstrings hawwe har eigen lingte-kodearring. In C-string-terminator is gjin algemiene ynstruksje om in nul oan it wire-berjocht ta te foegjen.
| Koartsluting yn de ymplemintaasje | Probleem om te kontrolearjen |
|---|---|
| In 32-bit wearde tawize fia in 8-bit pointer | It stjoert net alle fjouwer bytes út |
| In buffer casten nei in pointer fan in grutter hieltal | Rjochting en byte-oarder moatte noch behannele wurde |
| Oannimme dat ien lêzen of skriuwen ien berjocht is | TCP kin mar in part fan 'e protokolfolchoarder oerbringe |
Fergelykje elk fjild mei de bedoelde bestimming en behannelje partiel I/O. Twa bytes ûntfange bewiist net dat it hiele antwurd oankaam. It besjen fan dy grinzen kin in misfoarme fersyk ûnderskiede fan in server dy't in korrekt beskreaune ferbining wegeret.