-
Content Count
69 -
Joined
-
Last visited
Everything posted by mitzi
-
TCP clients are connected to devices (servers) or devices connects to TCP servers as clients and receive raw data to stream. Once the data is identified as valid input (data has header and terminator or etc) it is passed to thread which parses data by protocol (defined by header) and creates unified "signal" structure which is pushed to Buffer. Many data sources feed this Buffer this way (hundreds data packets per second). Other TCP clients are connected to other application (TCP server) which processes these signals. More sending TCP clients ensure faster signal delivery to main app. See attached scheme.
-
I really don't know what is wrong with thread containing TWSocket where in Execute method buffer is repeatedly asked for data and if data is available then TWSocket sends it. Why this solution is not recommended? Buffer is FIFO and it is (and should be) independent of any communication or messaging. It features Push and Pop methods and it is up to any kind of client to ask it for data or feed it with data. No trigger mechanism is usable because if new client is created it simply can't wait for any message signalling there's data available. It must look itself for it. Repeatedly. Thread is the best solution for this in my opinion. Only problem is with issues I mentioned in initial post.
-
Well, I'm really lost. I need several tcp clients to pop data from buffer simultaneously and send them as quick as possible. I need either timer or loop for this, but both are blocking, or thread where tcp client is its member but it does not work correctly :(. If there were some event like OnIdle or something like that where I would call pop and send when socket is ready or available then I understood how to do it without thread. But I didn't find anything like that. Buffer is fed with data from several processing threads massively so it is not too good idea to trigger all sending clients from it.
-
New demo ICSTCP.ZIP
-
No problem, I can rewrite demos to use standard non-thread model (they were written such way in the beginning).
-
Planned service should read data from many TCP clients (connected to various TCP servers), process them and send results to other TCP servers. When I tested this concept in non-thread env I found out that clients first read data from their connections (in main thread) and after all data is read then processed results are sent to servers. It is not parallel. Data reading in main thread blocked sending. There's buffer that receives results from data processing threads and out clients should pop up data from it immediately when they are available and send them out. But this is blocked because main thread is busy due to OnDataAvailable events from reading clients. I need TCP clients to read and send data in threads. Maybe I simply don't use ICS correctly, so please point me correct way.
-
DFM Editor allows edit and create Borland Delphi VCL/FireMonkey Forms in text and binary format. It is compatible with all Borland/Codegear/Embarcadero development tools (Delphi, Builder, BDS, RAD). DFM Editor can extracts forms from compiled executables and DLLs (or others Portable Executable files) by its extraction tool. Syntax highlihting editor with code folding, object inspector and object tree view are tools that make work easier. There's form preview tool available so you can view form in WYSIWYG mode. DFM Editor allows also user packages (*.bpl) registration to make included components to be known to DFM Editor. For more information see https://www.mitec.cz/dfm.html
-
What is Project Maker? MiTeC Project Maker is tool for automated batch Delphi projects building. With Project Maker, you can set compiler and its configuration, define actions processed before and after building, patch version information of built binary, sign this binary with specified certificate, apply 3rd-party software protection and many more. How does Project Maker work? Project Maker offers clear powerful interface for project building task definition. Every project can contain unlimited number of tasks. Task represents Delphi project, defined in dpr or dproj file. In addition Project Maker features Profiles, where you can define common properties for project. The project can have unlimited number of profiles. Using profiles you can simply switch between variety of build configurations. Who is Project Maker targeted on? Project Maker is targeted on developers who need to make various build scenarios and make repeated actions automatic. Project Maker is simple but powerful and provides one-click building of very complex and dependent projects. For more information see https://www.mitec.cz/pm.html
-
MiTeC Weather Forecast Component 2.1.0 released (Delphi 10.4 Sydney support)
mitzi posted a topic in Delphi Third-Party
New version 2.1.0 released + Delphi 10.4 Sydney compatibility For more information about the library, download locations and documentation, see the MiTeC Weather Forecast Component Home Page -
MiTeC Key and Mouse Logger Components 2.0.0 released (Delphi 10.4 Sydney support)
mitzi posted a topic in Delphi Third-Party
New version 2.0.0 released + Delphi 10.4 Sydney compatibility For more information about the library, download locations and documentation, see the MiTeC Key and Mouse Logger Components Home Page -
MiTeC Portable Executable Reader 2.3.0 released (Delphi 10.4 Sydney support)
mitzi posted a topic in Delphi Third-Party
New version 2.3.0 released + Paquet Builder, WinUPack, PC Guard, Enigma Protector, InstallShield, Delphi 10.4, CAB archive and VMWare Installation Launcher data detection added * Fixed bug in version info reading * Fixed DOS executables detection + Delphi 10.4 Sydney compatibility For more information about the library, download locations and documentation, see the MiTeC Portable Executable Reader Home Page -
New version 14.3.0 released + TSysProcMonThread - Thread description detection (Windows 10+) + TMiTeC_CPU - CPU features detection completely rewritten to be compilant with latest models + Delphi 10.4 Sydney compatibility For more information about the library, download locations and documentation, see the MiTeC System Information Component Suite Home Page
-
New version 14.1.0 released * TMiTeC_MUS - Fixed available updates detection in 32-bit version + TMiTeC_MUS - Added Update History detection and available updates detection information extended + TMiTeC_MUS - Added Demo 32 * TMiTeC_Storage - Fixed assigning logical drives to physical devices + TSysProcMonThread - Added additional settings properties (PerformanceMeasuring, EvaluateSecurityInfo, RetrieveProcessIcon, RetrieveProcessVersionInfo) For more information about the library, download locations and documentation, see the MiTeC System Information Component Suite Home Page
-
New version 14.1.0 released + Trusted Platform Module detection added (TMiTeC_Machine.TPM) * Windows Product Key decoding rewritten and fixed + Added Windows available updates detection (MicrosoftUpdateSession)(MSI_MUS.pas, TMiTeC_MUS) For more information about the library, download locations and documentation, see the MiTeC System Information Component Suite Home Page
-
New version 14.0.0 released + TProcListMonThread, TSysMonThread, TProcMonThread and TSysModListMonThread merged to new one - TSysProcMonThread (MSI_ProcListMon.pas, MSI_SysMon.pas, MSI.ProcMon.pas, MSI_SysModListMon -> MSI_SysProcMon.pas) + TMiTeC_SysProcMon - CPU usage measuring rewritten and precised - process cpu cycle time is used to usage calculation + TMiTeC_SysProcMon - CPU clock frequency evaluation rewritten - now it is based on real power distribution + TMiTeC_SysProcMon - Handle enumeration rewritten to reflect latest available APIs + TMiTeC_SysProcMon - System process module enumeration added + TMiTeC_SysProcMon - Windows 2000 compatibility fixed + TMiTeC_SysProcMon - Thread start address symbol evaluation + TMiTeC_Security - added product state, component rewritten->new interface + TMiTeC_SMBIOS - Windows 2000 compatibility fixed + TMiTeC_Storage - added SMART data reading for USB disks + TMiTeC_SMBIOS - initial SMBIOS 3.4 compliance + TMiTeC_SMBIOS - Hardware Security table 24 added + TMiTeC_SMBIOS - OEMM strings table 11 added + FPC/Lazarus compatibility For more information about the library, download locations and documentation, see the MiTeC System Information Component Suite Home Page
-
ICS v8.63 Hi, Is TSimpleWebSrv able to process POST request with some data (JSON) in body? GET works as expected but POST returns (to Postman) 404 and OnSimpWebSrvReq event is not triggered. Thanks
-
It's a pitty. It could be perfect for webhook implementation.
-
wsConnected triggered even if client not connected
mitzi posted a topic in ICS - Internet Component Suite
ICS v8.63 hi, I have TSslWSocketThrdServer and TSslWSocket. When server is not active (listening) and client tries to connect, following sequence of state changes is triggered: State changed: wsClosed->wsOpened State changed: wsOpened->wsConnecting State changed: wsConnecting->wsConnected State changed: wsConnected->wsClosed Why wsConnected is triggered? It is not true, client cannot be connected even for a while when server is down. It causes big problems when I want to get client reconnected in case of connection lost (or initially not available). I try to connect (in thread) and I get state wsConnected, thread is terminated because connection seems to be established but it is not. Can you fix it? In my opinion it should trigger wsConnecting->wsClosed as a last state change. Thanks. -
wsConnected triggered even if client not connected
mitzi replied to mitzi's topic in ICS - Internet Component Suite
Of course I did. But when i set TimeoutConnect either to 5 or 5000 OnTimeout event was triggered after 3-4 seconds after Connect was called regardless of TimeoutConnect value. So I'm a little confused. -
wsConnected triggered even if client not connected
mitzi replied to mitzi's topic in ICS - Internet Component Suite
Thanks, that's it. And timeout is defined in seconds or milliseconds? -
wsConnected triggered even if client not connected
mitzi replied to mitzi's topic in ICS - Internet Component Suite
hm, i'm trying, but despite the fact I have BUILTIN_TIMEOUT defined, property TimeoutConnect has no effect 😞 What is scale? Seconds or milliseconds? -
wsConnected triggered even if client not connected
mitzi replied to mitzi's topic in ICS - Internet Component Suite
Well but this is what I ask for. How did you (or others) solve this scenario? Your suggestion is ping. Well, when ping is successful it tells me nothing about my TCP server, if it is running and listening or not. Other suggestion is to abort connection attempt with timer. But it creates new problem with socket reusing. So what? It seems there's no useful advice. I will try to make my own port scan via WinSock.Select with timeout set to 5 secs (as I did in my post above for Delphi Socket component) before TWSocket.Connect. Disadvantage is when server is on, then i will do two connection attempts. First by port scan and second with real client connect. Another one is that this is blocking attempt. 😞 Anyone has better solution? -
wsConnected triggered even if client not connected
mitzi replied to mitzi's topic in ICS - Internet Component Suite
If client connect attempt to primary server fails, it needs immediately to connect to another one. If socket is in use even after timer 'breaks' connection attempt by Abort, then next immediate attempt will fail too due to socket is in use, won't it? -
wsConnected triggered even if client not connected
mitzi replied to mitzi's topic in ICS - Internet Component Suite
Your suggestions are no usable. ICMP is security issue and it is no allowed in our environment. Also it only checks IP address accessibility. Not TCP server itself. Other suggestions does not allow the socket to be immediately reused for new connection attempt. Do you really think my request is so stupid?