działanie read

0

Witam, mógłby ktoś przybliżyć mi znaczenie read(), wczytuje ona dane z serwera (jesli jesteśmy połączeni) do response?

struct sRamka
          {
              int id;//identyfikator transakcji
              int rozmiar;
              char tekst[100];
          };
          sRamka response;
          QTcpSocket m_socket;
          m_socket.read((char*)&response,sizeof(response)); //TUTAJ

 
1

Do read musisz podać wskaźnik na bufor oraz rozmiar tego bufora. Ponieważ doskonale wiesz jakich informacji oczekujesz i jakie jest ich ułożenie to tworzysz strukturę opisującą te informacje i podajesz ją do read rzutowaną na ciąg bajtów.

Jest to identyczne co:
...

char buffer[ sizeof( Response ) ] = { 0 };
OTcpSocket socket;
socket.read( buffer, sizeof( buffer ) );
Response* response = reinterpret_cast< Response* >( buffer );

lub:

char buffer[ sizeof( Response ) ] = { 0 };
OTcpSocket socket;
socket.read( buffer, sizeof( buffer ) );
char* ptr = buffer;
// wiemy, że pierwsze pole to id typu int
int response_id_from_buffer = *( reinterpret_cast< int* >( ptr ) );
// przesuwamy wskaźnik na kolejne pole w buforze...
ptr += sizeof( int );
int size_of_response_from_buffer = *( reinterpret_cast< int* >( ptr ) );
// ...i jeszcze raz
ptr += sizeof( int );
char* text_of_response_from_buffer = ptr;

1 użytkowników online, w tym zalogowanych: 0, gości: 1