Symulacja przesyłu danych, umieszczanie danych za strukturą.

0

Cześć, mam pytanie, otóż mam za zadanie zasymulować przesył danych. Robię to tak, że tworzę strukturę, która zawiera ID pakietu oraz wielkość tegoż pakietu. Tuż za pakietem chcę wysłać dane. Do tej pory mam takie wypociny:


```typedef struct {
    int ID;
    int psize;
} packet;

long size = infile.tellg(); // wielkość danych z pliku

 if(last_packet == 0){ // tu sobie sprawdzam, czy ostatni pakiet jest równy zero, jeżeli tak to tworzę sobię ileś tam takich samych pakietów o takiej samej wielkości
        void* pointer = new packet[packet_num*sizeof(packet)+size]; // alokacja pamięci
            for(int i=0; i<packet_num; i++){ // przejeżdżanie po pakietach 
                packet *p = (packet*)pointer + (i*sizeof(packet)+PACKET_SIZE);
                (*p).ID = i; // zapisuje ID pakietu
                printf("%d ", &(*p).ID);
                (*p).psize = PACKET_SIZE; // zapisuje wielkość pakietu
                printf("%d ", &(*p).psize);
                // w tym momencie, dosłownie po strukturze, chciałbym wysłać wiadomość odpowiadającą zmiennej PACKET_SIZE ( w tym wypadku powiedzmy 
               // literkę 'F', w jaki sposób mogę to zrobić?
        }

        delete pointer;
    }
1

Może konkretniej: co robisz? Piszesz jakieś testy i do tych testów chcesz symulować ruch sieciowy?

Swoją drogą ten kod to straszny chaos. Okropna i nieuzasadniona mieszanka C i C++.
void* pointer = new packet[packet_num*sizeof(packet)+size]; to jest tak źle że aż trudno to prosto wyrazić:

  • nieuzasadnione użycie void *
  • bezsensowne użycie sizeof i to w miejscu argumentu dla new[].
  • delete pointer

A dale też kwiatki: jak wypisywania adresu pola itd itp.

Kod nie trzyma się logicznej kupy.

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