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? 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. >> 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. --- Arno Garrels [TeamICS] http://www.overbyte.be/eng/overbyte/teamics.html >> >> >> 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