Linux - J'ai quelques questions sur l'ordre des octets des sockets.
我想大声告诉你
我想大声告诉你 2017-05-31 10:37:36
0
3
905

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. ?

我想大声告诉你
我想大声告诉你

répondre à tous(3)
为情所困

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal