From: Mark Gardner <magardner2017@gmail.com>
Subject: Re: Sockets, Streams, and Element_Arrays: Much confusion
Date: Sat, 31 Dec 2022 15:50:29 +0200 [thread overview]
Message-ID: <2c8f31a2-a39a-cb31-a764-28e0ac84ea1a@gmail.com> (raw)
In-Reply-To: topcdf$1pab$1@gioia.aioe.org
On 31/12/2022 15:11, Dmitry A. Kazakov wrote:
> On 2022-12-31 13:11, Mark Gardner wrote:
>
>> ...
>
> Stream_Element_Array is declared in Ada.Streams as
>
> type Stream_Element_Array is
> array(Stream_Element_Offset range <>) of
> aliased Stream_Element;
>
> For communication purpose it is an array of octets. Your datagram is
> represented as a Stream_Element_Array or a slice of.
>
According to RM 13.13.1, "Stream_Element is mod implementation-defined"
which to me says there is no guarantee that they will be octets, unless
this is specified elsewhere?
> As for streams, yes, it does not make sense to use them for networking,
> unless you override all stream primitives. The reasons for that are
>
> - non-portability of predefined primitives
> - low efficiency for complex data types
> - encoding inefficiency as well
>
> You will need to handle some application protocol artifacts, checksums,
> counters, strange encodings, sequence number etc. It is easier to this
> directly on the Stream_Element_Array elements.
So, how would I do this directly on the elements? I mean, if it is an
octet-array to a string, I expect an element-to-element copy, or type
conversion to work, but what about integers? Do I need to do something like
My_Int:=Unsigned_8(octet(1))+2**8*Unsigned_8(octet(2));
or whatever endianness demands? Or is this the time to learn how to use
Unchecked_Conversion?
> And, well, do not use UDP, expect for broadcasting. There is no reason
> to use it. For multicast consider delivery-safe protocols like PGM. For
> single cast use TCP/IP. (If you need low latency see the socket NO_DELAY
> option)
>
Well, my use case just so happens to be broadcasting, and
re-broadcasting data across a binary-tree-like p2p network.
next prev parent reply other threads:[~2022-12-31 13:50 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-31 12:11 Sockets, Streams, and Element_Arrays: Much confusion Mark Gardner
2022-12-31 13:11 ` Dmitry A. Kazakov
2022-12-31 13:50 ` Mark Gardner [this message]
2022-12-31 14:16 ` Dmitry A. Kazakov
2022-12-31 15:18 ` Jeffrey R.Carter
[not found] ` <de32dc82-ba42-4b27-a140-ddab9587219fn@googlegroups.com>
2022-12-31 22:49 ` Jeffrey R.Carter
2022-12-31 22:55 ` Dmitry A. Kazakov
2022-12-31 17:39 ` Simon Wright
2022-12-31 19:36 ` Mark Gardner
2022-12-31 20:16 ` Dmitry A. Kazakov
2022-12-31 23:41 ` Simon Wright
2023-01-01 9:48 ` Dmitry A. Kazakov
2023-01-01 16:11 ` Simon Wright
2023-01-01 16:17 ` Niklas Holsti
2023-01-05 7:55 ` Daniel Norte de Moraes
2023-01-05 10:35 ` Dmitry A. Kazakov
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox