Programación de sockets, dado que lee bytes, ¿debo considerar la situación de 64 bits? Si el servidor es de 64 bits, la lectura por bytes no es incorrecta.
No es necesario considerarlo, la lectura de bytes no tiene nada que ver con la cantidad de bits de la CPU, porque no importa qué tipo de CPU se utilice (x86 x64 arm 51, 8 bits, 16 bits, 32 bits). bit, 64 bits), un byte. Eso son 8 bits. Leer un byte significa leer 8 bits. Pero al leer int, hay una diferencia. Una CPU de 16 bits lee 16 bits = 2 bytes, una CPU de 32 bits lee 32 bits = 4 bytes y una CPU de 64 bits también lee 32 bits = 4 bytes. Long está en una CPU de 64 bits y diferentes compiladores leen números diferentes.
Si el flujo de bytes que lee en la red está formateado, como una estructura, entonces no es necesario considerar leer el flujo de bytes. Al convertir un flujo de bytes en una estructura, es necesario considerar la longitud de los tipos integrados de las diferentes plataformas.
Un poco de conocimiento adicional para usted:
Modelo de datos (LP32 ILP32 LP64 LLP64 ILP64)
El entorno de 32 bits implica el modelo de datos "ILP32" porque C Los tipos de datos son int, long y puntero de 32 bits. El entorno de 64 bits utiliza un modelo de datos diferente. En este momento, los punteros largos y son de 64 bits, por lo que se denomina modelo de datos "LP64".
Hoy en día, todas las plataformas tipo Unix de 64 bits utilizan el modelo de datos LP64, mientras que Windows de 64 bits utiliza el modelo de datos LLP64. Excepto los punteros, que son de 64 bits, otros tipos básicos no han cambiado. .
TIPO LP32 ILP32 LP64 ILP64 LLP64
CHAR 8 8 8 8 8
SHORT 16 16 16 16 16
INT 16 32 32 64 32
LARGO 32 32 64 64 32
LARGO LARGO 64 64 64 64 64
PUNTERO 32 32 64 64 64