Hi Arno

Miguel Cañas wrote:
>> hi Arno
>>
>> I am running ICS in a nt service and i am using multi threading but
>> the socketservers is in the main thread.

If you use V6 there may be collisions with window messages in the beginning
of range WM_USER posted to the same _thread where TWSocketServer created it's
hidden window, are you using V6? Do you use PostThreadMessage?

Im using ver 5 and I am not using PostThreadMessage.


Do you create the TWSocketServer instance in OnCreate of
TService? Only if you create it in TService.OnStart it'd run in the
service thread.

I put the component in the datamodule ( servive ) in design time, so i am going cerate it in OnStar.


>> The threads only do some
>> work with a database and validation of the information received from
>> the machines and in the end the threads make a send call.

Do you access the TWSocketClients from the worker threads directly, or
do you post a messsage with the worker thread result to the thread where
the TWSocketServer and its clients are running in?

If it's not the message-collision-problem of V6, it may have
to do with improper use of ICS in a multi-threaded env.,
beside the possible reasons Wilfried and Francois already mentioned.

In this point i have a .send call in the threads tha make the process work. Im going to change this.

I already have a demo service, where can i put the demo in case this changes does not work?

Thank you

>>
>> Miguel Angel Cañas C.
>>
>>
>>
>>
>>> From: "Arno Garrels" <[EMAIL PROTECTED]>
>>> Reply-To: ICS support mailing <twsocket@elists.org>
>>> To: "ICS support mailing" <twsocket@elists.org>
>>> Subject: Re: [twsocket] TWsocket server client list Error
>>> Date: Thu, 12 Oct 2006 19:03:52 +0200
>>>
>>> Miguel, are you running ICS in a multi-threaded application
>>> or in a NT-Service?
>>>
>>> ---
>>> Arno Garrels [TeamICS]
>>> http://www.overbyte.be/eng/overbyte/teamics.html
>>>
>>>
>>> Wilfried Mestdagh wrote:
>>>> Hello Miguel,
>>>>
>>>> No not configuration. the socket handle is probably somewhere
>>>> overwritten. Please check carefull all variable usage, and
>>>> specially arrays that may got overrun.
>>>>
>>>>> My TWsocketServer object :
>>>>
>>>>>     LocalAddr = '0.0.0.0'//set in runtime
>>>>>     LocalPort = '0' //set in runtime
>>>>
>>>> Try to not set it, you never know. However I dont think it can
>>>> cause the
>>>> behavour you have.
>>>>
>>>>>     OnDataSent = WSocketServerExDataSent
>>>>>     OnSessionClosed = WSocketServerExSessionClosed
>>>>
>>>> Set this in comment as it will never fire on server socket.
>>>>
>>>> ---
>>>> Rgds, Wilfried [TeamICS]
>>>> http://www.overbyte.be/eng/overbyte/teamics.html
>>>> http://www.mestdagh.biz
>>>>
>>>> Thursday, October 12, 2006, 06:58, Miguel Cañas wrote:
>>>>
>>>>> Hi Wilfried
>>>>
>>>>> Sorry but I didn-t have time to do a test program, I am in a dead
>>>>> line and I have another errors to fix too but this one is critical
>>>>> to me because the service is starting to loose connections.
>>>>
>>>>> Let me explain better:
>>>>
>>>>> 1. The connections Startt to grow because of the processing time,
>>>>> the service is processing as fast as possible.
>>>>> 2. I have like 50 to 60 connections in the client list
>>>>> (Wsocketserver.clientcount)
>>>>> 3. I have the first Error 10038 in function Disconnect
>>>>> (closesocket) Socket operation on non-socket
>>>>> 4. I?m using TcpView
>>>>> (http://www.sysinternals.com/Utilities/TcpView.html)
>>>>> and I saw that the new connection got into the list of the program
>>>>> but next disappeared and my program didn?t run the onConnect
>>>>> event, at least no t the part that is into my program.
>>>>> 5. After that I saw the connection with no IP no port info and the
>>>>> Hsokcet value = -1.
>>>>
>>>>> Could it  be a configuration problem ? in the TWsocket server ? or
>>>>> in the server PC?
>>>>
>>>>> My TWsocketServer object :
>>>>
>>>>>     LineMode = False
>>>>>     LineLimit = 65536
>>>>>     LineEnd = #13#10
>>>>>     LineEcho = False
>>>>>     LineEdit = False
>>>>>     Proto = 'tcp'
>>>>>     LocalAddr = '0.0.0.0'//set in runtime
>>>>>     LocalPort = '0' //set in runtime
>>>>>     LastError = 0
>>>>>     MultiThreaded = False
>>>>>     MultiCast = False
>>>>>     MultiCastIpTTL = 1
>>>>>     ReuseAddr = False
>>>>>     ComponentOptions = []
>>>>>     ListenBacklog = 1000 //s
>>>>>     ReqVerLow = 1
>>>>>     ReqVerHigh = 1
>>>>>     OnDataSent = WSocketServerExDataSent
>>>>>     OnSessionClosed = WSocketServerExSessionClosed
>>>>>     OnBgException = WSocketServerExBgException
>>>>>     FlushTimeout = 60
>>>>>     SendFlags = wsSendNormal
>>>>>     LingerOnOff = wsLingerOn
>>>>>     LingerTimeout = 0
>>>>>     KeepAliveOnOff = wsKeepAliveOnSystem
>>>>>     KeepAliveTime = 30000
>>>>>     KeepAliveInterval = 1000
>>>>>     SocksLevel = '5'
>>>>>     SocksAuthentication = socksNoAuthentication
>>>>>     BannerTooBusy = 'Sorry, too many clients'
>>>>>     MaxClients = 300
>>>>>     OnClientDisconnect = WSocketServerExClientDisconnect
>>>>>     OnClientConnect = WSocketServerExClientConnect
>>>>
>>>>
>>>>> Miguel Angel Cañas C.
>>>>
>>>>
>>>>
>>>>
>>>>>> From: Wilfried Mestdagh <[EMAIL PROTECTED]>
>>>>>> Reply-To: ICS support mailing <twsocket@elists.org>
>>>>>> To: ICS support mailing <twsocket@elists.org>
>>>>>> Subject: Re: [twsocket] TWsocket server client list Error
>>>>>> Date: Fri, 6 Oct 2006 12:35:51 +0200
>>>>>>
>>>>>> Hello Miguel,
>>>>>>
>>>>>> Your code looks OK. Very strange this behavour. Can you make a
>>>>>> simple demo (GUI) project to demonstrate the behavour ?
>>>>>> Possible I have time this weekend to investigate it.
>>>>>>
>>>>>> ---
>>>>>> Rgds, Wilfried [TeamICS]
>>>>>> http://www.overbyte.be/eng/overbyte/teamics.html
>>>>>> http://www.mestdagh.biz
>>>>>>
>>>>>> Friday, October 6, 2006, 03:25, Miguel Cañas wrote:
>>>>>>
>>>>>>> Hello Wilfried
>>>>>>
>>>>>>> Today i made some test and the results are not good for me. I
>>>>>>> colud no t find the error that triggger the exceptior but i find
>>>>>>> that for each exception i have an 'empty' connection (no ip no
>>>>>>> port).
>>>>>>
>>>>>>> I will make a little explanacion of my code. My service is a tcp
>>>>>>> server very similar to the example that comes with ICS
>>>>>>> componets.  My code look like this
>>>>>>
>>>>>>> WSocketServerExClientConnect()
>>>>>>>   ....
>>>>>>>         OnDataAvailable := ClientDataAvailable;
>>>>>>>         OnBgException := ClientBgException;
>>>>>>>         ConnectTime := Time
>>>>>>> ....
>>>>>>
>>>>>>>         writeinTxtFile( '--Conexiones Activas : ' + IntToStr(
>>>>>>> WSocketServerEx.ClientCount ), true );
>>>>>>>         for i := 0 to WSocketServerEx.ClientCount - 1 do
>>>>>>>         begin
>>>>>>>           writeinTxtFile( Format( '--Activa[%d] IP [%s] PORT
>>>>>>> [%s]',             [ i, WSocketServerEx.client[ i ].getPeerAddr,
>>>>>>> WSocketServerEx.client[ i ].getPeerport ]
>>>>>>>                     ) );
>>>>>>>         end;
>>>>>>> ...
>>>>>>> end
>>>>>>
>>>>>>> WSocketServerExClientDisconnect( )
>>>>>>> ...
>>>>>>>         for i := 0 to WSocketServerEx.ClientCount - 1 do
>>>>>>>         begin
>>>>>>>           WriteTxtFile( Format( '--D Activa[%d] IP [%s] PORT
>>>>>>> [%s]',             [ i, WSocketServerEx.client[ i ].getPeerAddr,
>>>>>>> WSocketServerEx.client[ i ].getPeerport ]
>>>>>>>              ) );
>>>>>>>        end;
>>>>>>> ..
>>>>>>> end;
>>>>>>
>>>>>>
>>>>>>> When i have like 150 or 200 connections in the list i have
>>>>>>> something like this in my txt file
>>>>>>
>>>>>>> [05/10/2006 11:21:15:845] --D Activa[165] IP [] PORT []
>>>>>>
>>>>>>> and if i try to do .close call this call works but nothing
>>>>>>> happen, not to the list no exception, no disconnect event
>>>>>>> nothing.
>>>>>>
>>>>>>> This behavior repeats only with heavy traffic.
>>>>>>
>>>>>>> If i start a new valid connection after i while this connection
>>>>>>> is added to the end and works fine if no heavy traffic start
>>>>>>> again but i can free the used positions with empty connections
>>>>>>> (no ip no port).
>>>>>>
>>>>>>> Thank you
>>>>>>
>>>>>>> Miguel Angel Cañas C.
>>>>>>
>>>>>>
>>>>>>>> From: Wilfried Mestdagh <[EMAIL PROTECTED]>
>>>>>>>> Reply-To: ICS support mailing <twsocket@elists.org>
>>>>>>>> To: twsocket@elists.org
>>>>>>>> Subject: Re: [twsocket] TWsocket server client list Error
>>>>>>>> Date: Thu, 5 Oct 2006 15:59:48 +0200
>>>>>>>>
>>>>>>>> Hello Miguel,
>>>>>>>>
>>>>>>>>> However I want to ask something to, Is there a theory for the
>>>>>>>>> connections without IP and PORT that shows the
>>>>>>>>> TWsocketServer.client[i]?
>>>>>>>>
>>>>>>>> No I have no theory at the momen. With empty  IP and Port,
>>>>>>>> which properties do you exacly mean ?
>>>>>>>>
>>>>>>>>> in case that some timeotu expired, the code looks like this:
>>>>>>>>
>>>>>>>> Code looks OK to me.
>>>>>>>>
>>>>>>>> ---
>>>>>>>> Rgds, Wilfried [TeamICS]
>>>>>>>> http://www.overbyte.be/eng/overbyte/teamics.html
>>>>>>>> http://www.mestdagh.biz
>>>>>>>>
>>>>>>>> Thursday, October 5, 2006, 15:37, Miguel Cañas wrote:
>>>>>>>>
>>>>>>>>> Thank you for the answer Wilfried
>>>>>>>>
>>>>>>>>> Im following your suggestios and I will test the Wsockets
>>>>>>>>> events today with
>>>>>>>> with
>>>>>>>>> try .. except blocks to try to find the error.
>>>>>>>>
>>>>>>>>> However I want to ask something to, Is there a theory for the
>>>>>>>>> connections without IP and PORT that shows the
>>>>>>>>> TWsocketServer.client[i]?
>>>>>>>>
>>>>>>>>> [04/10/2006 17:24:09:296] --D Activa[1] IP [] PORT []
>>>>>>>>
>>>>>>>>> because I have a procedure that check for connections to make
>>>>>>>>> a close socket in case that some timeotu expired, the code
>>>>>>>>> looks like this:
>>>>>>>>
>>>>>>>>> //check for a valid client
>>>>>>>>>             if WSocketServerEx.IsClient(
>>>>>>>>> WSocketServerEx.Client[ i ] ) then
>>>>>>>> then
>>>>>>>>>             begin
>>>>>>>>>              //Close socket. Nothing send.
>>>>>>>>>               TTcpSrvClient( WSocketServerEx.Client[ i ]
>>>>>>>>> ).Close;            end;
>>>>>>>>> I can see thar in the case of the no IP no port connections i
>>>>>>>>> can do a .Close call
>>>>>>>>
>>>>>>>>> Thank you
>>>>>>>>
>>>>>>>>> Miguel Angel Cañas C.
>>>>>>>>
>>>>>>>>
>>>>>>>>>> From: Wilfried Mestdagh <[EMAIL PROTECTED]>
>>>>>>>>>> Reply-To: ICS support mailing <twsocket@elists.org>
>>>>>>>>>> To: ICS support mailing <twsocket@elists.org>
>>>>>>>>>> Subject: Re: [twsocket] TWsocket server client list Error
>>>>>>>>>> Date: Thu, 5 Oct 2006 12:42:03 +0200
>>>>>>>>>>
>>>>>>>>>> Hello Miguel,
>>>>>>>>>>
>>>>>>>>>> BGException is background exception. It comes from the
>>>>>>>>>> message pump. This means it can come also from your code in
>>>>>>>>>> one of the TWSocket events. To test put them all in a
>>>>>>>>>> exception block until you found the error (if it is over
>>>>>>>>>> there of course).
>>>>>>>>>>
>>>>>>>>>> Socket operation on a non socket means that somewhere some
>>>>>>>>>> handle is overwritten. Mostly this comes because you have
>>>>>>>>>> somewhere written outside a variable (so written [partly] to
>>>>>>>>>> another).
>>>>>>>>>>
>>>>>>>>>> This is not nececary the same moment but has happend a little
>>>>>>>>>> while before it.
>>>>>>>>>>
>>>>>>>>>> Also possible is that you have a pointer to a datasocket that
>>>>>>>>>> is not exestant anymore. If you have an array of sockets or
>>>>>>>>>> so, be sure to update it on OnClientConnect /
>>>>>>>>>> OnClientDisconnect. Remember also that in OnClientDisconnect
>>>>>>>>>> the datasocket in question is still there, it is called
>>>>>>>>>> before it is destroyed (also the count argument).
>>>>>>>>>>
>>>>>>>>>> ---
>>>>>>>>>> Rgds, Wilfried [TeamICS]
>>>>>>>>>> http://www.overbyte.be/eng/overbyte/teamics.html
>>>>>>>>>> http://www.mestdagh.biz
>>>>>>>>>>
>>>>>>>>>> Thursday, October 5, 2006, 09:06, Miguel Cañas wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi
>>>>>>>>>>
>>>>>>>>>>> I am using TwSocketServer in a service application that
>>>>>>>>>>> receives information from a POS Machine (using TCP) and I am
>>>>>>>>>>> having problems with the number of
>>>>>>>>>> of
>>>>>>>>>>> clients that shows WSocketServerEx.ClientCount. In some
>>>>>>>>>>> cases clientcount return more connections than the number of
>>>>>>>>>>> machines that I have connected to the service.  I am saving
>>>>>>>>>>> the client list in txt file and it shows this;
>>>>>>>>>>
>>>>>>>>>>> [04/10/2006 17:24:09:296] --D Activa[0] IP [] PORT []
>>>>>>>>>>> [04/10/2006 17:24:09:296] --D Activa[1] IP [] PORT []
>>>>>>>>>>> [04/10/2006 17:24:09:296] --D Activa[2] IP [] PORT []
>>>>>>>>>>> [04/10/2006 17:24:09:296] --D Activa[3] IP [10.10.10.237]
>>>>>>>>>>> PORT [2379]
>>>>>>>>>>
>>>>>>>>>>> What happen with the positions 0,1 and 2 that shows no port
>>>>>>>>>>> or ip??
>>>>>>>>>>
>>>>>>>>>>> I have found this exception 2 segs before the addition of a
>>>>>>>>>>> new 'empty´(no ip or port) connection and was capture in
>>>>>>>>>>> WSocketServerExBgException.
>>>>>>>>>>
>>>>>>>>>>> [04/10/2006 17:24:07:453] [ESocketException] Msg[Error 10038
>>>>>>>>>>> in function Disconnect (closesocket)
>>>>>>>>>>> Socket operation on non-socket]
>>>>>>>>>>
>>>>>>>>>>> Is there a relationship between this exception and the
>>>>>>>>>>> addition of the new
>>>>>>>>>> new
>>>>>>>>>>> empty connection? or I have to look for the error in another
>>>>>>>>>>> place. Any help would be appreciated.
>>>>>>>>>>
>>>>>>>>>>> Thank you
>>>>>>>>>>
>>>>>>>>>>> Miguel Angel Cañas C.
>>>>>>>>>>
>>>>>>>>>>> _________________________________________________________________
>>>>>>>>>>> Express yourself instantly with MSN Messenger! Download
>>>>>>>>>>> today it's FREE!
>>>>>>>>>>>
>>>>>> http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> To unsubscribe or change your settings for TWSocket mailing
>>>>>>>>>> list please goto
>>>>>>>>>> http://www.elists.org/mailman/listinfo/twsocket Visit our
>>>>>>>>>> website at http://www.overbyte.be
>>>>>>>>
>>>>>>>>> _________________________________________________________________
>>>>>>>>> Express yourself instantly with MSN Messenger! Download today
>>>>>>>>> it's FREE! http://messenger.msn.click-
>>>>>>>>> url.com/go/onm00200471ave/direct/01/
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> To unsubscribe or change your settings for TWSocket mailing
>>>>>>>> list please goto
>>>>>>>> http://www.elists.org/mailman/listinfo/twsocket Visit our
>>>>>>>> website at http://www.overbyte.be
>>>>>>
>>>>>>> _________________________________________________________________
>>>>>>> Express yourself instantly with MSN Messenger! Download today
>>>>>>> it's FREE! http://messenger.msn.click-
>>>>>>> url.com/go/onm00200471ave/direct/01/
>>>>>>
>>>>>>
>>>>>> --
>>>>>> To unsubscribe or change your settings for TWSocket mailing list
>>>>>> please goto http://www.elists.org/mailman/listinfo/twsocket
>>>>>> Visit our website at http://www.overbyte.be
>>>>
>>>>> _________________________________________________________________
>>>>> Express yourself instantly with MSN Messenger! Download today it's
>>>>> FREE! http://messenger.msn.click-
>>>>> url.com/go/onm00200471ave/direct/01/
>>> --
>>> To unsubscribe or change your settings for TWSocket mailing list
>>> please goto http://www.elists.org/mailman/listinfo/twsocket
>>> Visit our website at http://www.overbyte.be
>>
>> _________________________________________________________________
>> Express yourself instantly with MSN Messenger! Download today it's
>> FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
>>
>>
>
>
>
>> --
>> To unsubscribe or change your settings for TWSocket mailing list
>> please goto http://www.elists.org/mailman/listinfo/twsocket
>> Visit our website at http://www.overbyte.be
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://www.elists.org/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/

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

Reply via email to