Jump to content

Angus Robertson

Members
  • Content Count

    1993
  • Joined

  • Last visited

  • Days Won

    35

Angus Robertson last won the day on February 18

Angus Robertson had the most liked content!

Community Reputation

620 Excellent

5 Followers

About Angus Robertson

  • Birthday December 16

Technical Information

  • Delphi-Version
    Delphi 11 Alexandria

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Angus Robertson

    Cannot connect IcsMQTTClient to PicoMQTT server

    I've updated the ICS MQTT client and server components to support protocol 3.1.1, previously we only supported 3.1. Not finished testing, not checked all packets yet. The client will connect to a v5 server by ignoring dozens of new options, but needs a lot more work, much more complicated than v3.1.1. Also added a lot more logging so we see the packets being sent and received, and added more options to the sample. In SVN now, the overnight zip will be updated this evening. Angus
  2. I always return REST Json responses with a results wrapper, success/fail, to avoid the client needing to parse for data. But your change is made, and will be in SVN this week. Angus
  3. The REST component does a simple check for {}, but would miss Json that comprises only array elements without any objects, which I assumed was very rare. But adding such a check is trival, meanwhile you can just parse ResponseRaw, albeit with the risk of failed parsing from non-Json text. Angus
  4. Angus Robertson

    Multithreading

    No, OpenSSL is widely used with threaded programs, provided those programs are written correctly. Angus
  5. Angus Robertson

    Multithreading

    Windows itself uses a thread for each async socket. Angus
  6. Angus Robertson

    Multithreading

    On the general issue of using threads, remember that the ICS web and FTP servers support hundreds of simultaneous clients without using threads, I've never understood why so many people assume that threads are necessary to do two or more client connections at once. Unless they are migrating from using blocking components... when the code should be rewritten properly. At some point, there will be a new ICS threaded server component, since threads are necessary to use more than one CPU, but the server will generally only need one thread per CPU, with multiple clients in each thread. Angus
  7. Angus Robertson

    Multithreading

    Using threads to handle multiple components in parallel is unnecessary, provided you are using async methods, so fully event driven. I've done tests with hundreds of components running in parallel, the SSL negotiation takes a while so eventually limits the number in parallel. The FTP component should usually be created and destroyed within the thread. There is a specific component for your purpose, TIcsFtpMultiThread in OverbyteIcsFtpMult.pas with a sample OverbyteIcsXferTst. Angus
  8. Angus Robertson

    WSSendBinaryStream usage

    I've added a new event OnWSFramesDone to the Websocket client, called when the queue of frames has been sent, for flow control when sending a lot of data. Previously, the OnWSFreameSent was called after each frame, but it was not easy to tell if this was the last queued frame. I've only tested it with a few frames of ASCII, the HttpRest sample really needs a new button to send a queue of files, which is on my list, but also needs a server able to accept those files. But I'm sure you'll tell me if it does not work. In SVN now, will be zipped overnight. Angus
  9. Angus Robertson

    Delphi 12.3 is available

    I've just installed Bonus KSVC 7.0 OK. Angus
  10. Angus Robertson

    ICS for RAD Studio 12.3

    ICS V9.4 is ready for RAD Studio 12 Update 3, aka RAD Studio 12.3, and specifically the new 64-bit IDE. The ICS Delphi V9.4 design packages already have Windows 64-bit as a target, allowing them to be installed into the 64-bit IDE. The 32-bit IDE allows design packages to be built with target Windows 64-bit, but not installed. Note the 64-bit IDE does not support Windows 32-bit targets, only Windows 64-bit. If you use the IcsInstallVclFmx.groupproj Build Group, all design packages will be built for Windows 64-bit. All the main samples build OK in the 64-bit IDE, with a Windows 64-bit target being automatically added, unfortunately even when deliberately missing such as the OverbyteIcsNetMon sample that does work in Windows 64-bit. Currently, GetIt only works in read-only mode in the 64-bit IDE, so you will need to install ICS using GetIt from the 32-bit IDE, then start the 64-bit IDE and manually install the three design packages. The ICS V9.4 C++ Builder packages can be currently be installed successfully into C++ Builder 12.3 32-bit IDE for the Windows 32-bit target only. The 32-bit IDE should be able to build for Windows 64-bit and Win64x (Modern) as well, all the package paths are correct, but both targets currently give compiler errors. The C++ Windows 64-bit errors are four unresolved external, and the same error happens in Delphi 11, so should be fixable by someone with C++ knowledge. Building for Win64x (Modern) gives lots of undefined symbol errors due to RAD Studio being unable to import other packages compiled built with C++ Win64x, this error was reported six months ago for C++ 12.2 but is not fixed in 12.3. So ICS can not be used in the C++ 64-bit IDE that only supports Win64x (Modern), not Windows 64-bit. Separately, there is a new version of the DD Service Application Framework used by two of the ICS samples, adding support for 64-bit IDE Wizards. Available shortly from https://www.magsys.co.uk/delphi/ddservice.asp Angus
  11. Angus Robertson

    Add keylog callback functions

    What is the benefit of keeping the internal TLS keys? Wireshark? Angus
  12. Thanks, I'll add it shortly. Angus
  13. Angus Robertson

    Cannot connect IcsMQTTClient to PicoMQTT server

    I'm updating the ICS MQTT client for v3.1.1 at the moment, should be this week. Not planning v5 at the moment, that is totally different. Most servers still support 3.1.1. Angus
  14. Angus Robertson

    Cannot connect IcsMQTTClient to PicoMQTT server

    I've installed the Mosquitto Broker server locally, and it works OK against the ICS MQTT client. Our sample currently always adds a default username/password, and this was upsetting test.mosquitto.org on the unauthenticated port, so the sample now allows them to be set specifically, and leaving them blank connects OK to test.mosquitto.org, which is also now on a ComboBox dropdown to make testing easier. But this does not explain why PicoMQTT fails (unless it's also authentication). Mosquitto supports 3.1, 3.1.1 and 5, I'll see if I can disable 3.1. There is a comment in the conf file about clients connecting with 3.1.1 and a zero length client Id so the server allocates one, perhaps this explains the difference. Angus
  15. Angus Robertson

    Cannot connect IcsMQTTClient to PicoMQTT server

    I get Connection NOT AUTHORISED connecting to test.mosquitto.org on ports that say unauthenticated, I'll spend a few minutes looking to see why, but my knowledge of MQTT is zero, and I don't propose to learn the protocol, maintenance of the ICS MQTT component really needs to be done my users that understand and use MQTT. Angus
×