[WinSock] Przesyłanie liczb funkcją send()
Ostatnio zmodyfikowano 2010-12-23 11:32
filipesq Temat założony przez niniejszego użytkownika |
[WinSock] Przesyłanie liczb funkcją send() » 2010-12-22 21:44:45 Witajcie, dawno mnie nie było.
Od razu przejdę do rzeczy: Czy jest jakiś sposób, aby funkcją send() w WinSock przesyłać zmienne typu int? Oczywiście wiem, że można to zrobić tak: - Zapisać liczbę z int do string - potem ze string do char - a po wysłaniu z char do string - i ze string do int Ale może jest jakiś inny sposób, np. odpowiednik funkcji send(), tylko, że do liczb? |
|
ison |
» 2010-12-22 21:54:00 int liczba = 123;
char temp[ 11 ]; sprintf( temp, "%d\0", liczba ); send( socket, temp, 11, 0 );
albo int send_int( const SOCKET & send_int_socket, const int send_variable, const int send_length, const int send_flags ) { char * temp = new char[ send_length + 2 ]; sprintf( temp, "%d\0", send_variable ); int result = send( send_int_socket, temp, send_length, send_flags ); delete[] temp; return result; }
send_int( MySocket, 10, 2, 0 );
|
|
DejaVu |
» 2010-12-22 22:24:12 W zasadzie to nie masz serializacji i deserializacji :) |
|
ison |
» 2010-12-22 23:07:54 jakiej serializacji? ;D Język C++ nie posiada wbudowanego wsparcia dla serializacji. Istnieją jednak przeznaczone do tego biblioteki, np. S11n.
|
o to chodzi? Serializacja służy do zapisu stanu obiektu, a później do odtworzenia jego stanu.
|
czy serializacji nie tyczy się przypadkiem tylko większych obiektów? stosuje się to dla 1 inta? |
|
DejaVu |
» 2010-12-22 23:42:06 Miałem na myśli konwersje Litle Endian/Big Endian, które stosuje się dla danych przesyłanych binarnie większych od jednego bajta. W przypadku łańcucha znaków typu char wysyłasz znaki, a znak jest wielkości 1 bajta i tworzy spójną informację. W przypadku przesyłania 2 bajtów informacja może zostać różnie odczytana przez drugi komputer w zależności od stosowanej konwencji. Przykładowo 0xabcd może być odczytane przez drugi komputer jako 0xcdab, co jak łatwo się domyślić nie będzie oczekiwanym rezultatem. |
|
filipesq Temat założony przez niniejszego użytkownika |
» 2010-12-23 11:32:13 Jednak wykorzystałem do tego stringi. Biorąc pod uwagę resztę kodu, w moim przypadku są wygodnym rozwiązaniem. Zamykam temat. |
|
« 1 » |