First of all, many regards to all old friends!
I "know" many of you since the FW version 1.92
I'we been too bussy and didn't visit forums much... Such is life.
But, it's nice to "see" old faces here again
I hope you're all up and running
Now, about some interesting issue Doug started:
(I spoted this issue today and am sorry I didn't find it eralier..)
Hello Doug,
A very interesting work.
It does almost exactly what I am doing for years by now. And I have no time to make it more widely usefull in all my later apps. But what I have done 5 years ago works up to now perfectly. And all written in xHArbour/Fivewin (Server) and xHArbour/Fivewin on client side. It is a part of one of my apps - a Payroll software.
We should really expand this kind of functionality
Using Sockets.
Let me explain.
1. We have clients which pays us every year the certain license fee. Each client has his data written in a Hardware dongle, the identification data is a number ID.
2. On our company server, we have a complete database system which we use to control the clients (add a new, change the data for the existing clients, change the number of Employees allowed for each, change the licenses expiration dates and many other elements...
Also on the server, the xHarbour/Fivewin program is running all the time 24/7, listening to defined port. The small dialog shows the status and if administrator wants to check, he can see messages about who is connecting and when. Also we have a log system which is writen into DBF on server, we review later.
3. The client has a menu option where they can for example "Update their license".
The clients program take the data from a Dongle, construct the string which contains all necessary data and send it automaticaly through the defined port, to the company server, wehere we have a xHarbour program listening on the same port number. There we can define the license expiration date and some other data for exact client.
4. When the request come to the defined port on the server side, the server side program check the string and check the validity of the client ID (does it exists at all). Then it checks into the databases the validity of the request (is client active for example) and then takes the license expiration date from the DBF, among some other data. Send it back to the Client.
If the client paid for his license update, the server program also extends the expiration date to the given period (1 year in our case) If the cient didn't paid for his update, the apropriate message is sent back to them.
At the same the log is appended to the DBF and we can later see who and when tconnected, also seen unsuccessfull logs etc..
5. The client program reads what came from server and if there is no error and all data valid, the new expiration date is written into the DOngle and from then on the client has updated his license automaticaly.
This is simplified scenario.
After all these years I decided to rewrite our WebPayrol application to use this kind of logic and have client nicely work in a perfect Fivewin environment (with all whistless and bells) at the same time connection to the server will be done per request where the server program will maintain the data and send them back to the client....
Much nicer than any WEB aplication...
There is much we can do using socket, indeed... Doug is absolutelly right. This way I can avoid having SQL of any kind and no additional programs (servers) installed.
We have a few hundred clients which contact our server very often from all parts of USA and we never had any problem because of their concurent accesing the server program
Regards
Boris
Belgrade, Serbia