udp_genesis 1
udp_genesis 2
udp_genesis 3
udp_genesis 4
udp_genesis 5
udp_genesis 6
udp_genesis 7
udp_genesis 8
udp_genesis 9
udp_genesis 10
udp_genesis 11
udp_genesis 12
udp_genesis 13
udp_genesis 14
udp_genesis 15
udp_genesis 16
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
udp_genesis 39
udp_genesis 40
udp_genesis 41
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_errata_asciil... 91 UDP.Close_Socket(Socket);
udp_errata_asciil... 92
udp_genesis 93 Put_Line("Done.");
udp_genesis 94
udp_genesis 95 end UDP_Tx_Demo;