From: "Rego, P." <pvrego@gmail.com>
Subject: Ada x <whatever> Datagram Sockets
Date: Wed, 6 Feb 2019 15:10:35 -0800 (PST)
Date: 2019-02-06T15:10:35-08:00 [thread overview]
Message-ID: <47f17695-f9a5-4024-b2da-3f13209dc4fd@googlegroups.com> (raw)
I am trying to communicate a Windows Ada application with another application in the same machine (an specific C++ porting called MQL) using datagram sockets. The core Ada app was extracted from GNAT.Sockets documentation, from the ping-pong caller.
with GNAT.Sockets;
with Text_IO;
with Ada.Exceptions; use Ada.Exceptions;
procedure DG_SERVER is
package SOCKETS renames GNAT.Sockets;
Socket : SOCKETS.Socket_Type;
Address : SOCKETS.Sock_Addr_Type;
Channel : SOCKETS.Stream_Access;
Group : constant String := "239.255.128.128";
begin
SOCKETS.Initialize;
SOCKETS.Create_Socket (Socket, SOCKETS.Family_Inet, SOCKETS.Socket_Datagram);
SOCKETS.Set_Socket_Option
(Socket,
SOCKETS.Socket_Level,
(SOCKETS.Reuse_Address, True));
SOCKETS.Set_Socket_Option
(Socket,
SOCKETS.IP_Protocol_For_IP_Level,
(SOCKETS.Multicast_TTL, 1));
SOCKETS.Set_Socket_Option
(Socket,
SOCKETS.IP_Protocol_For_IP_Level,
(SOCKETS.Multicast_Loop, True));
Address.Addr := SOCKETS.Any_Inet_Addr;
Address.Port := 55505;
SOCKETS.Bind_Socket (Socket, Address);
SOCKETS.Set_Socket_Option
(Socket,
SOCKETS.IP_Protocol_For_IP_Level,
(SOCKETS.Add_Membership, SOCKETS.Inet_Addr (Group), SOCKETS.Any_Inet_Addr));
Address.Addr := SOCKETS.Inet_Addr (Group);
loop
Channel := SOCKETS.Stream (Socket, Address);
declare
Message : String := String'Input (Channel);
begin
Address := SOCKETS.Get_Address (Channel);
Text_IO.Put_Line (Message & " from " & SOCKETS.Image (Address));
String'Output (Channel, Message);
end;
end loop;
exception
when The_Error : others =>
Text_IO.Put_Line("!!! "&Ada.Exceptions.Exception_Information (The_Error));
end DG_SERVER;
The problem is that when I send the message (from MQL side), my Ada server returns
raised GNAT.SOCKETS.SOCKET_ERROR : [10040] Message too long
Call stack traceback locations:
0x424e6c 0x426ddb 0x426e17 0x4200a8 0x42174e 0x4019fc 0x40246d 0x4013db 0x74198482 0x778f3ab6 0x778f3a86
and investigating the libraries, Channel : SOCKETS.Stream_Access will really receive any data size.
So... how can avoid the exception?
Thanks!
next reply other threads:[~2019-02-06 23:10 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-06 23:10 Rego, P. [this message]
2019-02-07 0:42 ` Ada x <whatever> Datagram Sockets Jere
2019-02-07 5:28 ` Rego, P.
2019-02-07 6:00 ` Egil H H
2019-02-07 6:41 ` Rego, P.
2019-02-07 7:23 ` Egil H H
2019-02-07 11:48 ` Jere
2019-02-08 19:41 ` Rego, P.
2019-02-08 20:31 ` Dmitry A. Kazakov
2019-02-08 21:56 ` Rego, P.
2019-02-07 8:28 ` Dmitry A. Kazakov
2019-02-07 10:08 ` Simon Wright
2019-02-08 0:15 ` Randy Brukardt
2019-02-08 8:25 ` Simon Wright
2019-02-08 13:24 ` Dmitry A. Kazakov
2019-02-09 1:01 ` Randy Brukardt
2019-02-10 17:54 ` Simon Wright
2019-02-11 8:39 ` Dmitry A. Kazakov
2019-02-11 13:35 ` Simon Wright
2019-02-11 14:25 ` Dmitry A. Kazakov
2019-02-11 15:19 ` Simon Wright
2019-02-11 16:04 ` Dmitry A. Kazakov
2019-02-11 23:19 ` Randy Brukardt
2019-02-12 11:35 ` Simon Wright
2019-02-08 19:44 ` Rego, P.
2019-02-07 11:47 ` Jere
2019-02-07 18:00 ` Jeffrey R. Carter
2019-02-08 20:35 ` Rego, P.
2019-02-08 21:26 ` Jeffrey R. Carter
2019-02-08 22:02 ` Rego, P.
2019-02-08 21:38 ` Dmitry A. Kazakov
2019-02-08 20:00 ` Rego, P.
2019-02-07 10:11 ` Simon Wright
2019-02-08 20:03 ` Rego, P.
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox