Przesłanie Int'a przez socket

0

Witam! Chciałbym w jakiś ładny sposób przesłać inta z servera do klienta. Do zapakowania danych używam funkcji fgets, wysyłane jest wszystko przy pomocy send, wszystko było by ok tylko, że dane można z tego co mi wiadomo zapakować tylko do tablicy char. Po stronie klienta odbieram dane i przerabiam je na inta w taki sposób
dana = recv_buf[0] - '0'; i ta metoda sprawdza się dopóki user podaje liczbę składającą się z jednej cyfry. W jaki sposób można przesłać dłuższe inty?
Z góry dzięki za odpowiedź
Pozdrawiam

0

To się robi tak:

int to_send = htonl(twoj_int);
send(socket, (char*)&to_send, sizeof(int));
0

a przy odbiorze jak to odebrać w jaki typ wsadzić w chara?
dostaję takiego warninga przy atoi
warning: passing argument 1 of 'atoi' makes pointer from integer without cast.
Dzięki za Twój czas.

0

Po stronie klienta dajesz:

char buff[sizeof(int)+1];
recv(socket, buff, sizeof(int));
int odebrany = ntohl(*(int*)buff);
0
nullpointexception napisał(a)

Witam! Chciałbym w jakiś ładny sposób przesłać inta z servera do klienta. Do zapakowania danych używam funkcji fgets, wysyłane jest wszystko przy pomocy send, wszystko było by ok tylko, że dane można z tego co mi wiadomo zapakować tylko do tablicy char. Po stronie klienta odbieram dane i przerabiam je na inta w taki sposób
dana = recv_buf[0] - '0'; i ta metoda sprawdza się dopóki user podaje liczbę składającą się z jednej cyfry. W jaki sposób można przesłać dłuższe inty?
Z góry dzięki za odpowiedź
Pozdrawiam

Zasadniczo nie rozumiem całej wypowiedzi, ale dane binarne najłatwiej przesłać w postaci struktury czyli send (fd, &struct, sizeof(struct));

Albo z serializować ją i wysłać cleartextem..., a potem z deserializować ;>

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