Red de conocimiento informático - Problemas con los teléfonos móviles - Uso del significado de las funciones out y in en la programación de redes Qt

Uso del significado de las funciones out y in en la programación de redes Qt

Este es el objeto QDataStream declarado. Está declarado por el código mismo y no está predefinido. Es un objeto de flujo. Puede ver la documentación de QDataStream. Hereda de QDataStream out(&block,QIODevice::WriteOnly); El modo Sólo para escribir. De manera similar, si observa el código, es una secuencia de solo lectura, que tiene la función de leer los datos en el socket. in>> significa leer en tamaño de bloque.

Similar a iostream, la entrada y la salida no tienen nada que ver con el módulo de red.

out es un objeto QDataStream, que declara el bloque de instancia de QByteArray como búfer de almacenamiento y el modo es de solo escritura. De manera similar, si observa el código, es una secuencia de solo lectura, que tiene la función de leer los datos en el socket. in>> significa leer en tamaño de bloque. Al igual que iostream, la entrada y la salida no tienen nada que ver con el módulo de red.

Para garantizar que el cliente pueda recibir el archivo completo, la información del tamaño del archivo completo se escribe al comienzo del flujo de datos, para que el cliente pueda juzgar si se ha recibido el archivo completo. Basado en la información del tamaño. En el lado del servidor, al enviar datos, primero se debe enviar la información del tamaño real del archivo. Sin embargo, el tamaño del archivo es impredecible al principio, por lo que se agrega out<< (quint16) 0 al comienzo del bloque. de tamaño quint16, que son dos bytes de espacio, se utiliza para colocar la información del tamaño del archivo más adelante.

Luego salga<seek(0) para regresar al principio del bloque y agregar la información del tamaño real del archivo, que es el siguiente código, que es el tamaño real del archivo: out; <<(quint16) (block.size() – tamaño de(quint16)).