google for "little endian" or "big endian" will answer your question. 'Tis all about how you computer keeps integers in memory. H. On Tue, 10 Feb 2004, Amith wrote: > hi all, > i send this structure over the network using sockets (UDP) > api . > > struct temporary > { > char name[10]; > unsigned short x; > }temp; > > i assign : > > strcpy(temp.name,"ABCDEFGHI"); > temp.x = 0x1100; > > Now i capture the packet sent from my system using Ethereal ( the packet > capture tool ). > i observed that the string ( char name [10] ) was transmitted as > expected i.e i could see the hex decimal values > for A,B......I in order. i.e 41 42 43 ........48 49 00 . But the > integer variable ( unsigned short x) was transmitted as 0x00 0x11 ( as > shown in ethereal ) and not as 0x1100 ( which was expected by me). > > if it was something to do with "Network bye ordering " then : > why didn't it happen with the string (char name[10]) and only with the > Integer var? > why was it (char name[10] ) transmitted as it is ? > > i'am confused. Any pointers or explanations would be very much helpfull. > > cheers, > Amith > > PS: hope my question was clear. > > > forgot to add some info . > > when i add htons( ) to the code above as : > temp.x = htons(0x1100); > > it is transmitted as it is. i.e 0x11 0x00. > > cheers, > Amith > > > > > > > -- > Kernelnewbies: Help each other learn about the Linux kernel. > Archive: http://mail.nl.linux.org/kernelnewbies/ > FAQ: http://kernelnewbies.org/faq/ > -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/