J'ai récemment découvert les sockets et j'ai découvert que si j'envoie une requête, l'adresse IP et le numéro de port demandés doivent être convertis dans l'ordre des octets du réseau. Sinon, des problèmes d'analyse se produiront à cause du petit-boutiste et du gros-boutiste
Mais pourquoi les données texte une fois le socket établi ne devraient-elles pas être traitées dans l'ordre des octets ?
Par exemple, ce que j'envoie est une chaîne. Comme nous le savons tous, le jeu de caractères Unicode actuel est supérieur à un octet, il y aura des problèmes de chaîne. Pourquoi les données reçues par le socket peuvent-elles être reconnues normalement. ?
Socket ne reconnaît que l'unité d'octet, et les octets écrits seront lus par l'autre extrémité dans le même ordre.
L'encodage Unicode inclut déjà l'ordre des octets. Par exemple, si vous écrivez UTF16LE à une extrémité, vous devez décoder les octets selon UTF16LE à l'autre extrémité (Cas particulier : l'unité d'encodage de UTF8 est un octet, ici. il n'y a pas de problème d'ordre des octets).
Si vous utilisez socket pour envoyer des données générales, vous devez tenir compte de l'ordre des octets. Cette considération fait généralement partie du protocole de sérialisation.
.L’ordre des octets concerne les entiers. Le numéro de port est un entier de 16 bits, il y a donc un problème endian. Tout le reste n'a pas d'importance
Parce que TCP/UDP et d'autres protocoles réseau de niveau inférieur sont stipulés de cette manière. Une fois le socket établi, les données transmises sont équivalentes au protocole que vous avez conçu, vous pouvez donc utiliser l'ordre des octets de votre choix, à condition que l'expéditeur et le destinataire utilisent le même ordre des octets.