comp.lang.ada
 help / color / mirror / Atom feed
From: "Dr. Michael Paus" <paus@ib-paus.com>
Subject: Re: Last stream problem: byte order
Date: Tue, 26 Mar 2002 11:25:42 +0100
Date: 2002-03-26T10:25:44+00:00	[thread overview]
Message-ID: <3CA04CA6.338B37D7@ib-paus.com> (raw)
In-Reply-To: mailman.1017085322.10332.comp.lang.ada@ada.eu.org

Erik Sigra schrieb:
> 
> Now my stream application almost works. The last remaining problem seems to
> be byte order. The server is programmed in C++ with Qt and the client is
> programmed in Ada with adasockets-1.0. The last thing I did was to change the
> byte order in the server
> ("the_stream.setByteOrder(QDataStream::LittleEndian);"). After that the
> numbers came out right at the other end.
> 
> However, this may not be a safe solution. The safe way would probably be to
> always have the network communication in BigEndian format and make sure the
> client always obeys this, regardless of the platform.
> 
> So how does one set the byte order to BigEndian on the Ada side? Or is there
> a different, better idea?

The easiest way to solve this problem once an forever is to manipulate the
file s-stratt.adb from the GNAT library. It handles all the stream stuff for
primitive types like integers, floats etc. If you just introduce a procedure
which swaps the bytes for each type you can achieve the effect you want.
I did that a long time ago, so my implementation is currently outdated but
if you like I could send you a copy. If you also check the byte order of your
system at runtime (there is a system constant in Ada which you can check) you
can even achieve the effect that all stream data is always written in network
byte order independent of the platform your program is running on. This makes
it easy, e.g. to exchange data with a Java application which writes its data
to a DataOutputStream.

Michael



  parent reply	other threads:[~2002-03-26 10:25 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-03-25 19:45 Last stream problem: byte order Erik Sigra
2002-03-25 22:28 ` Jeffrey Carter
2002-03-25 22:36 ` Stephen Leake
2002-03-26  4:32 ` Eric G. Miller
2002-03-26 10:25 ` Dr. Michael Paus [this message]
2002-03-26 17:53   ` Pascal Obry
2002-03-26 18:25     ` Dr. Michael Paus
2002-03-26 19:25       ` Pascal Obry
2002-03-27 15:37   ` Erik Sigra
2002-03-27 18:12     ` Dr. Michael Paus
2002-03-28  2:24       ` Eric G. Miller
2002-03-28 18:34         ` Stephen Leake
2002-03-28 18:38         ` Simon Wright
2002-03-29  2:08           ` Eric G. Miller
2002-03-29  6:52             ` Simon Wright
2002-03-29  7:06               ` Simon Wright
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox