Bonjour,
J'ai un serveur de socket C++ et un client socket en Java. A priori le code du Client est correct. J'ai modifié le serveur de socket en C++.
J'envoie donc vers le socket la structure sz_rfbFramebufferUpdateRectHeader
qui est bien relu dans le client.
Ensuite le client lit sz_rfbZlibHeader qui contient le nombre de byte pour la buffer final qui contient une image PNG.
La aussi je relis bien la bonne valeur.
Par contre au moment de lire le PNG je n'ai que des Zéros dans à la lire dans le socket.
A noter la fonction write écrit le contenu du buffer qui pointe bien vers contenu souhaité.
Donc mon erreurdoit provenir de l'assignation dans this->buffer (un BYTE *), mais je ne parviens à me sortir de ce guêpier (pour rester poli).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 BYTE * dest; ..... this->buffer =dest+sz_rfbFramebufferUpdateRectHeader+sz_rfbZlibHeader; int buffersize = (int)this->encodePNG(source,rectW,rectH); write(oss.str(),this->buffer,buffersize); totalCompDataLen = buffersize; // Format the ZlibHeader rfbZlibHeader *zlibh=(rfbZlibHeader*)(dest+sz_rfbFramebufferUpdateRectHeader); zlibh->nBytes = Swap32IfLE(totalCompDataLen); //rfbPNGData * endDest=(rfbPNGData *)(dest+sz_rfbFramebufferUpdateRectHeader+sz_rfbZlibHeader); //endDest->data= this->buffer; // Update statistics encodedSize += sz_rfbZlibHeader + totalCompDataLen; int ret = sz_rfbFramebufferUpdateRectHeader +sz_rfbZlibHeader+totalCompDataLen;
Partager