From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=0.1 required=5.0 tests=BAYES_00,FREEMAIL_FROM, PDS_OTHER_BAD_TLD autolearn=no autolearn_force=no version=3.4.4 X-Received: by 2002:a02:9143:: with SMTP id b3mr7864104jag.25.1549494636071; Wed, 06 Feb 2019 15:10:36 -0800 (PST) X-Received: by 2002:a9d:2c22:: with SMTP id f31mr161230otb.4.1549494635803; Wed, 06 Feb 2019 15:10:35 -0800 (PST) Path: eternal-september.org!reader01.eternal-september.org!feeder.eternal-september.org!news.gegeweb.eu!gegeweb.org!usenet-fr.net!proxad.net!feeder1-2.proxad.net!209.85.166.215.MISMATCH!k10no57880itk.0!news-out.google.com!v71ni38ita.0!nntp.google.com!q69no57963itb.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Wed, 6 Feb 2019 15:10:35 -0800 (PST) Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=191.17.174.180; posting-account=TRgI1QoAAABSsYi-ox3Pi6N-JEKKU0cu NNTP-Posting-Host: 191.17.174.180 User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <47f17695-f9a5-4024-b2da-3f13209dc4fd@googlegroups.com> Subject: Ada x Datagram Sockets From: "Rego, P." Injection-Date: Wed, 06 Feb 2019 23:10:36 +0000 Content-Type: text/plain; charset="UTF-8" Xref: reader01.eternal-september.org comp.lang.ada:55448 Date: 2019-02-06T15:10:35-08:00 List-Id: 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!