Przekazywanie struktury przez gniazda w C
Próbuję przekazać całą strukturę od klienta do serwera lub odwrotnie. Przyjmijmy następującą strukturę
struct temp {
int a;
char b;
}
ja używamwysłać do i wysłanie adresu zmiennej struktury i otrzymanie jej po drugiej stronie za pomocąrecvfrom funkcjonować. Ale nie jestem w stanie uzyskać oryginalnych danych wysłanych przez odbiorcę. W funkcji sendto zapisuję odebrane dane do zmiennej typu struct temp.
n = sendto(sock, &pkt, sizeof(struct temp), 0, &server, length);
n = recvfrom(sock, &pkt, sizeof(struct temp), 0, (struct sockaddr *)&from,&fromlen);
Gdzie pkt jest zmienną typu struct temp.
Mimo że otrzymuję 8 bajtów danych, ale jeśli próbuję je wydrukować, po prostu wyświetlają się wartości śmieci. Jakaś pomoc w naprawie?
UWAGA: Nie trzeba używać bibliotek innych firm.
EDIT1: Jestem naprawdę nowy w tej koncepcji serializacji ... Ale bez robienia serializacji nie mogę wysłać struktury przez gniazda?
EDIT2: Kiedy próbuję wysłać ciąg lub zmienną całkowitą za pomocąwysłać do irecvfrom funkcje Odbieram dane poprawnie pod koniec odbiornika. Dlaczego nie w przypadku konstrukcji? Jeśli nie muszę korzystać z funkcji serializacji, to czy powinienem wysłać każdego członka struktury indywidualnie? To naprawdę nie jest odpowiednie rozwiązanie, ponieważ jeśli liczba członków jest „n”, to liczba „n” linii kodu jest dodawana tylko w celu wysyłania lub odbierania danych.