raw
udp_genesis             1 ------------------------------------------------------------------------------
udp_genesis 2 ------------------------------------------------------------------------------
udp_genesis 3 -- This file is part of 'UDP Tx Demo', accompanies 'UDP' library. --
udp_genesis 4 -- --
udp_genesis 5 -- (C) 2018 Stanislav Datskovskiy ( www.loper-os.org ) --
udp_genesis 6 -- http://wot.deedbot.org/17215D118B7239507FAFED98B98228A001ABFFC7.html --
udp_genesis 7 -- --
udp_genesis 8 -- You do not have, nor can you ever acquire the right to use, copy or --
udp_genesis 9 -- distribute this software ; Should you use this software for any purpose, --
udp_genesis 10 -- or copy and distribute it to anyone or in any manner, you are breaking --
udp_genesis 11 -- the laws of whatever soi-disant jurisdiction, and you promise to --
udp_genesis 12 -- continue doing so for the indefinite future. In any case, please --
udp_genesis 13 -- always : read and understand any software ; verify any PGP signatures --
udp_genesis 14 -- that you use - for any purpose. --
udp_genesis 15 -- --
udp_genesis 16 -- See also http://trilema.com/2015/a-new-software-licensing-paradigm . --
udp_genesis 17 ------------------------------------------------------------------------------
udp_genesis 18 ------------------------------------------------------------------------------
udp_genesis 19
udp_genesis 20 with Ada.Text_IO; use Ada.Text_IO;
udp_genesis 21 with Interfaces; use Interfaces;
udp_genesis 22
udp_genesis 23 with UDP; use UDP;
udp_genesis 24
udp_genesis 25
udp_genesis 26 procedure UDP_Tx_Demo is
udp_genesis 27
udp_genesis 28 Socket : UDP.Socket;
udp_genesis 29
udp_genesis 30
udp_genesis 31 Local_Endpoint : UDP.Endpoint := (Address => UDP.INADDR_ANY,
udp_genesis 32 Port => 5000);
udp_genesis 33
udp_genesis 34 Remote_Endpoint : UDP.Endpoint
udp_genesis 35 := (Address => UDP.IP_From_String("0.0.0.0"),
udp_genesis 36 Port => 7000);
udp_genesis 37
udp_genesis 38 ----- Dulap test, replace with your own -----
udp_genesis 39 -- Remote_Endpoint : UDP.Endpoint
udp_genesis 40 -- := (Address => UDP.IP_From_String("161.0.121.200"),
udp_genesis 41 -- Port => 7000);
udp_genesis 42 ----------------------------------------------
udp_genesis 43
udp_genesis 44 Sent_Payload : UDP.Payload;
udp_genesis 45 Received_Payload : UDP.Payload;
udp_genesis 46 Received_Origin : UDP.Endpoint;
udp_genesis 47 Received_Valid : Boolean;
udp_genesis 48
udp_genesis 49 begin
udp_genesis 50 Put_Line("Generating " &
udp_genesis 51 UDP.Payload_Size'Image(Sent_Payload'Length) & "-byte turd...");
udp_genesis 52
udp_genesis 53 for I in Sent_Payload'Range loop
udp_genesis 54 Sent_Payload(I) := Unsigned_8(I mod 256);
udp_genesis 55 end loop;
udp_genesis 56
udp_genesis 57 Put_Line("Opening socket on local endpoint " &
udp_genesis 58 UDP.IP_To_String(Local_Endpoint.Address) &
udp_genesis 59 " :" & UDP.IP_Port'Image(Local_Endpoint.Port) & "...");
udp_genesis 60
udp_genesis 61 UDP.Open_Socket(Socket, Local_Endpoint);
udp_genesis 62
udp_genesis 63 Put_Line("Sending turd to " &
udp_genesis 64 UDP.IP_To_String(Remote_Endpoint.Address) &
udp_genesis 65 " :" & UDP.IP_Port'Image(Remote_Endpoint.Port) & "...");
udp_genesis 66
udp_genesis 67 UDP.Transmit(Socket, Remote_Endpoint, Sent_Payload);
udp_genesis 68
udp_genesis 69 Put_Line("Waiting for echo...");
udp_genesis 70
udp_genesis 71 UDP.Receive(Socket, Received_Origin, Received_Payload, Received_Valid);
udp_genesis 72
udp_genesis 73 Put_Line("Received payload from " &
udp_genesis 74 UDP.IP_To_String(Received_Origin.Address) &
udp_genesis 75 " :" & UDP.IP_Port'Image(Received_Origin.Port) & "...");
udp_genesis 76
udp_genesis 77 if Received_Valid then
udp_genesis 78
udp_genesis 79 if Received_Payload = Sent_Payload then
udp_genesis 80 Put_Line("Echo came back equal to the send turd!");
udp_genesis 81 else
udp_genesis 82 Put_Line("Echo came back mutilated!");
udp_genesis 83 end if;
udp_genesis 84
udp_genesis 85 else
udp_genesis 86
udp_genesis 87 Put_Line("Received short payload, ignored.");
udp_genesis 88
udp_genesis 89 end if;
udp_genesis 90
udp_genesis 91 Put_Line("Done.");
udp_genesis 92
udp_genesis 93 end UDP_Tx_Demo;