Jump to content

caymon

Members
  • Content Count

    8
  • Joined

  • Last visited

Posts posted by caymon


  1. I have a  Delphi subscription  (for several years already).

    I wanted to know if all the Delphi versions, installed during that (long) subscription period, will continue to work if I don't renew my subscription.

     

    A sales guy from Embarcadero chated me that ''Every Edition which has been already unlocked, remains available for you''.

     

    However, in this legal document: https://www.ideracorp.com/~/media/IderaInc/Files/Embarcadero/v12_0/Embarcadero RAD Studio Delphi CBuilder Software License and Support Agreement English

    in the chapter ''ADDITIONAL LICENSE TERMS APPLICABLE TO SOFTWARE LICENSED ON A SUBSCRIPTION BASIS'' we read:

     

    Upon expiration or termination of the License Term, Licensee must
    immediately cease use of and uninstall the Product but Licensed Works developed
    using the Product may still be distributed. Continued use of Subscription Licenses
    following the expiration or termination of the License Term is unauthorized, constitutes a
    violation of this Agreement and may constitute a misappropriation of Licensor's
    intellectual property rights.

     

    Then, what is the truth?

     


  2. A system A, which has several IP addresses, sends UDP packets to a system B that also have several addresses:

     

    On system A,  there is a TIdUPDClient with the code:

     

      UDPClient.Host := '2017::7690:5000:0:1'; // one of the addresses of B;
      UDPClient.Port := 3610;
      UDPClient.IPVersion := Id_IPv6;
      UDPClient.BoundIP := 'FD00:CAFE:CAFE::AAAA'; // one of the addresses of A

     

    The UDP packets are sent with: Src= FD00:CAFE:CAFE::AAAA and Dst=2017::7690:5000:0:1, which is OK.

     

    In the system B, there is an IdUDPServer listening to any addresses of B, i.e:

    IdUDPServer.Bindings.Add.IP := '';

     

    When B receives a packet, the handler UDPRead is executed, with a ''ABinding'' parameter with the values:

    ABinding.IP = '0:0:0:0.0:0:0:0'

    ABinding.Port = 3610

    ABinding.PeerIP = 'FD00:CAFE:CAFE::AAAA'  // src address of the packet, which is correct

    ABinding.PeerPort = ...any value

     

    From the 'ABinding' parameter, is there a way to know the ''real local address'' that received the packet? In our example, this address should be 2017::7690:5000:0:1?

     

    Then, before responding to the received message, could I do UDPServer.Binding.IP := ''the real local address'' and then UDPServer.SendBuffer() so that

    the sent UDP packet would have Src=2017::7690:5000:0:1 and Dst=FD00:CAFE:CAFE::AAAA?

     

    Thank you.

     


  3. In an TIdUDPServer, we can select the IP address, where the server listens to using (for example):

    IdUDPServer.Bindings.Add.IP := ...;

     

    If I set one of the several addresses of the system, like:

    IdUDPServer.Bindings.Add.IP := '2017::7690:5000:0:1';

     

    Then the UDPServer receives the packets sent to that address, the OnUDPRead handler is called

    and I can verify that the values of ABinding.IP, ABinding.PeerIP and ABinding.PeerPort are all correct.

     

    If IdUDPServer.Bindings.Add.IP is set to a blank string, then IdUDPServer should bind to all available local IPs.

    But, this doesn't seem to be true, the OnUDPRead is not called as if the UDPServer would not receive the packets sent to the address above.

     

    What could be the reason?

     

    Thank you.

     

    Using 10.4.2 on W10

     

×