-- Echo - Provide a trivial UDP echo server from a fixed port. -- Copyright (C) 2022,2023 Prince Trippy . -- This program is free software: you can redistribute it and/or modify it under the terms of the -- GNU Affero General Public License version 3 as published by the Free Software Foundation. -- This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without -- even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -- See the GNU Affero General Public License for more details. -- You should have received a copy of the GNU Affero General Public License along with this program. -- If not, see . with Interfaces.C, Posix_UDP_Garbage; use Interfaces.C, Posix_UDP_Garbage; procedure Echo is A : Octet_Array(1 .. 512) := (others => 0); S : Sockaddr := Make_Sockaddr(Address => 0, Port => 7); F : Int; I : Size_T; begin begin Socket(F); Bind(Socket => F, Socket_Address => S); loop begin -- Notice that, by starting it from one, a length of zero results in that null array. Recvfrom(Socket => F, Buffer => A, Socket_Address => S, Length => I); Sendto(Socket => F, Buffer => A(1 .. I), Socket_Address => S); exception when others => null; end; end loop; exception when others => null; end; Close(F); end Echo; .