>> Have you already tried to include wsoNoReceiveLoop in client objects'
>> ComponentOptions? Also are those large amount of socket messages sent
>> in a blocking loop? If so, change that to send the next message when
>> the previous one actually has been sent, that is when event
>> OnDataSent triggers.
> I already use wsoNoReceiveLoop in the ComponentOptions.
> The problem is indeed that the large amount of socket messages is
> send in a blocking loop.
> Your proposal would be a appropriate work around, but i think this
> will slow down the communication.

I don't think so, not realy. It would however retrieve (other) 
messages from the queue if any, hence give all clients a chance to
do some work as well, would just lead to better load balancing. 
Lengthy blocking tasks should be avoided as much as possible since
by default the listening socket and all clients share the same 
>>> Sometimes it happens, that in the Server the OnDataAvaiable-Callback
>>> stops to be triggered.
>>> If i call receive(nil,0) on the affected socket, everything gets
>>> back working correctly.
>>> In my opinion some postmessage-calls in the socket are discarded
>>> because the windows message queue for the server process is full.
>>> If i set HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
>>> NT\CurrentVersion \Windows\USERPostMessageLimit to Value of 50.000
>>> Everything seems to be working fine.
>> IMO TWSocket should be changed to raise an Exception if a call to
>> PostMessage() fails, currently it doesn't check the PostMessage()
>> return value.
> This would be as suitable solution, especially for environments with
> more than 10.000 Client.

IMO it would be just useful for debugging purposes, warning the 
developer that the application design should be revised. One cannot 
resolve this error condition without calling the message pump, which
may lead to other odd behavior.

Arno Garrels 

To unsubscribe or change your settings for TWSocket mailing list
please goto
Visit our website at

Reply via email to