Jump to content

Search the Community

Showing results for tags 'indy10'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Delphi Questions and Answers
    • Algorithms, Data Structures and Class Design
    • VCL
    • FMX
    • RTL and Delphi Object Pascal
    • Databases
    • Network, Cloud and Web
    • Windows API
    • Cross-platform
    • Delphi IDE and APIs
    • General Help
    • Delphi Third-Party
  • C++Builder Questions and Answers
    • General Help
  • General Discussions
    • Embarcadero Lounge
    • Tips / Blogs / Tutorials / Videos
    • Job Opportunities / Coder for Hire
    • I made this
  • Software Development
    • Project Planning and -Management
    • Software Testing and Quality Assurance
  • Community
    • Community Management

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Delphi-Version

Found 1 result

  1. Hi all, I've migrated my application to the latest Indy10 sources. A very good library, congrats to developers. Now I would like to improve my research devices on the net feature. In few words, my IoT devices implement a UDP service to respond to a broadcast UDP request of identification. When IoT sends a reply to discover software uses the IoT IP address so after I can, for example, use other messages to change the IoT device programmed IP. Actually, the system works BUT depends on what network adapter will route the discover software broadcast message. For example, I've collected the Network Adapters in my system before to send discover UPD packet as a broadcast message: At this point clicking on the Change IP button a form make the broadcast search using this code: procedure TConfiguratorView.SearchClick(Sender: TObject); var S: string; procedure AddInteger(var Buffer: string; Value: Integer); var ValueData: array [0..3] of Byte absolute Value; begin Buffer := Buffer + Char(ValueData[3]); Buffer := Buffer + Char(ValueData[2]); Buffer := Buffer + Char(ValueData[1]); Buffer := Buffer + Char(ValueData[0]); end; begin // shows advice message about network routing question if Sender <> nil then begin case ShowCustomMessage ( _('Info About Search'), _('Select desired option:'), _('Search Message could be routed by OS in a wrong Network Interface so if, after a Search, you don''t find any ' + 'CNC Board try again disabling any Network Interface not connected with the CNC Board.\n\n' + 'PS: If you are in a Virtual Machine the Network Adapter must be in BRIDGED MODE.'), '', [ _('Continue'), _('Abort') ] ) of 101: Exit; end; end; // stores serial number selected if GetActiveQMoveInfo = nil then FSerialNumberSelected := 0 else FSerialNumberSelected := GetActiveQMoveInfo.SerialNumber; // clears qmove list content QMoveListClear; // inits and starts searching phase FUDPServer.Bindings.Clear; with FUDPServer.Bindings.Add do begin IP := '0.0.0.0'; Port := 5001; end; FUDPServer.Active := True; SearchTimer.Interval := SEARCH_TIME; SearchTimer.Enabled := True; // sends broadcast find command if FSerialNumber = 0 then FUDPServer.Broadcast(QMOVE_ETHERNET_HEAD + Char(QMOVE_ETHERNET_VERSION) + QMOVE_EHTERNET_FIND_COMMAND, QMOVE_ETHERNET_SEARCHING_PORT, '', IndyTextEncoding(enc8Bit)) else begin S := ( QMOVE_ETHERNET_HEAD + Char(QMOVE_ETHERNET_VERSION) + QMOVE_EHTERNET_FIND_COMMAND + #226#64 ); AddInteger(S, FSerialNumber); FUDPServer.Broadcast(S, QMOVE_ETHERNET_SEARCHING_PORT, '', IndyTextEncoding(enc8Bit)); FSerialNumber := 0; end; // refreshes objects RefreshObjects; end; When the PC has only one Network Adapter (eg: the LAN) the system work always. When there are more than one Network Adapter depends on where the windows "route" the UDP packets so I need to require to end-user to manually disable temporarily any other Network Adapter (eg: WIFI, VMWare Network Adapters, etc.). There is a way to specify to UDP server to send a broadcast to a specific network adapter (eg: 192.168.x.x) instead to use an unknown default? Thank you in advance for your suggestions Silverio
×