Mae meysydd porthladd SOCKS5 yn ddau fai digyswllt yn nhrefn bai'r rhwydwaith: y bai mwyaf arwyddocaol sy'n dod gyntaf. Yn Go, amgodiwch uint16 sydd eisoes wedi'i ddilysu yn uniongyrchol:

var field [2]byte
binary.BigEndian.PutUint16(field[:], port)

Mewnforiwch encoding/binary. Ar gyfer porthladd 1080, y baes hecsadegol sy'n deillio yw 04 38. Ar gyfer porthladd 4, 00 04 ydynt; mae sero blaenllaw yn rhan o'r maes lled sefydlog.

Os yw'r mewnbwn yn dechrau fel cyfanrif mwy neu linyn, dilyswch ei amrediad rhifol cyn ei drawsnewid i uint16. Gall trawsnewid daflu'r bitiau uchel yn hytrach na riportio gwerth y tu allan i'r amrediad.

Mewn ateb SOCKS5, cyfreswch BND.PORT, sef maes porthladd rhwymedig y gweinydd. Peidiwch â chopïo'r porthladd cyrchfan a ofynnwyd iddo i'r maes hwnnw dim ond oherwydd bod y ddau'n meddiannu dau fai. Gosodwch y maes amgodiedig ar ôl cyfeiriad yr ateb, y mae ei hyd yn dibynnu ar ATYP.

Erthyglau cysylltiedig