Dear ICS Team,

I found a problem in our software that is limiting the total ammount of TCP 
sockets that I can create.

The problem that I found is that I can´t create many many instances of 
TWSocket, because of its internal message handler (I did many tests), here are 
my findinds:

We use AllocateHWnd from Classes.pas to allocate message handlers to several 
different objects in our software, so, at one time we can have over 1000 
handles allocated across the software

I did some tests and using a service application I could create about 170.000 
instaces of TWSocket, but if I allocate some thousand handles (By using 
Classes.AllocateHWnd) than I can´t create ANY instance of TWSocket, in my tests 
I created 10.000 handles by using classes.allocatehwnd, than I couldn´t create 
any TWSocket

Since my app can have many handles and I need many sockets, I did many tests 
and found that procedure TIcsWndHandler.AllocateHWnd; create its own windows 
handle, instead of using classes.allocatehwnd
How does this scheme works?

To make a test, I changed the ICS implementaion of procedure 
TIcsWndHandler.AllocateHWnd; to create the handle using Classes.AllocateHWnd, 
then, I could create over 800.000 instances of TWSocket, and at least in my 
tests, it was connecting to hosts and receiving data correctly

And the better, if I create 1.000.000 of handlers by using 
CLasses.AllocateHWnd, I could create over 700.000 instaces of TWSocket yet...

So, If I change my ICS code to allocate the message handler by using 
Classes.AllocateHWnd instead of using the implementation of procedure 
TIcsWndHandler.AllocateHWnd;
What could go wrong?

Because at preliminary tests, the sockets were working OK, even in 
multi-threading and I almost have no limit of socket creation

Eric
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to