Hello Wilfried,

Well now I know the problem.  The Overbyte web site says RcvdCount is 
unreliable.  Their example shows the use of a 8192 size buffer in Data 
Available to receive whatever data may be there and to check the return of the 
Receive() call to know how much data was delivered.  I assume this means that 
the maximum amount of data received during any Data Available event is 8192.

It's amazing how so small a thing can cost you so much time.  I'm going to 
recode and retest now.

Thanks,
Robert

--- On Fri, 6/5/09, robertoschler <robertosch...@yahoo.com> wrote:

> From: robertoschler <robertosch...@yahoo.com>
> Subject: Re: [twsocket] TWSocket stops receiving where TClientSocket just 
> keeps going
> To: "ICS support mailing" <twsocket@elists.org>
> Date: Friday, June 5, 2009, 8:10 PM
> 
> Hello again Wilfried,
> 
> A little extra data.  My Data Available event handler
> grabs the number of waiting bytes in the queue from the
> RcvdCount property (I use it to size the receive
> buffer).  If the byte count is 0, I just ignore the
> Data Available event.  That is, I do nothing.  I
> just added code to the Data Available event handler to add a
> line to my session log whenever I get a Data Available event
> where the RcvdCount is 0.  I'm getting a ton of Data
> Available events where the RcvdCount is 0 on the plain
> vanilla TWSocket instance connected to the image streaming
> server.  Any ideas what could cause that to happen?
> 
> Thanks,
> Robert
> 
> --- On Fri, 6/5/09, robertoschler <robertosch...@yahoo.com>
> wrote:
> 
> > From: robertoschler <robertosch...@yahoo.com>
> > Subject: Re: [twsocket] TWSocket stops receiving where
> TClientSocket just keeps going
> > To: "ICS support mailing" <twsocket@elists.org>
> > Date: Friday, June 5, 2009, 7:43 PM
> > 
> > Hello Wilfried,
> > 
> > Thank you for your reply.
> > 
> > It appears to be something with my application but I
> don't
> > know what.  I grabbed your SocketSpy program and set
> it
> > up to act as a proxy between the streaming image
> server and
> > my program.  Your log kept accumulating incoming
> data
> > from the server while my app, which was connected to
> > SocketSpy as an incoming client, stopped firing
> > DataAvailable() events after a certain number of
> received
> > frames, just as I described before.
> > 
> > Now some details.  My app is also a proxy server
> like
> > SocketSpy.  I looked at the SocketSpy code and here
> is
> > the only crucial difference I could find between your
> code
> > and mine.  When your server socket accepts a
> connection
> > you create a client socket that creates it's own
> REMOTE
> > client socket when a new connection is accepted. 
> This
> > REMOTE client socket immediately connects to the other
> end
> > other end of the proxy link.  From the client
> socket's
> > Data Available handler you immediately send the data
> to the
> > REMOTE socket and vice-a-versa.
> > 
> > In my program when I accept a new connection with
> > TWSocketServer I just create a client socket.  This
> > results in a message being posted to the host form
> telling
> > it a new client has been connected and the current
> > connection count.  If the client count is now
> greater
> > than 0 for the first time, a single plain vanilla
> TWSocket
> > control then connects to the streaming image server
> > completing the other end of my proxy link.  (Details
> on
> > why I use this architecture are below).
> > 
> > To facilitate data transfer I use windows messages
> posted
> > to the host form.  When *any* of the Clients to
> > TWSocketServer fire the Data Available event, I post
> a
> > message to the host form notifying it of the new
> data. 
> > The host form then calls SendStr() on the single
> plain
> > vanilla TWSocket control connected to the image
> streaming
> > server.  Conversely, when the plain vanilla TWSocket
> > control fires its Data Available event, a message is
> posted
> > to the host form who then sends the data to ALL
> clients
> > connected to the TWSocketServer instance.
> > 
> > I do this so I can have a one-to-many proxy link,
> where
> > multiple clients can receive the image stream from the
> image
> > server.  Also, I use the windows messaging technique
> > for safety purposes so that I am not trying to send
> large
> > amounts of data to the other end of the proxy link
> from
> > within the Data Available handler itself.  By using
> > windows messages to trigger the sends I am moving the
> send
> > outside the scope of the Data Available handler.
> > 
> > Note, I have code in *every* event handler for all
> sockets,
> > including for the Error and BgException events, and I
> am not
> > getting any error reports.  I also check all
> > ErrorCode's on those events that provided that
> parameter,
> > and report any non zero code ErrorCode occurrences. 
> > There have been no such occurrences.
> > 
> > Do you have any ideas for tests or tips on trying to
> > diagnose why the Data Available event on the plain
> vanilla
> > TWSocket component connected to the image streaming
> server
> > would go dead after receiving successfully for a
> short
> > time?
> > 
> > Thanks for your help,
> > Robert
> > 
> > 
> > --- On Fri, 6/5/09, Wilfried Mestdagh <wilfr...@mestdagh.biz>
> > wrote:
> > 
> > > From: Wilfried Mestdagh <wilfr...@mestdagh.biz>
> > > Subject: Re: [twsocket] TWSocket stops receiving
> where
> > TClientSocket just keeps going
> > > To: "ICS support mailing" <twsocket@elists.org>
> > > Date: Friday, June 5, 2009, 3:30 AM
> > > Hello Robert,
> > > 
> > > To be absolutely sure if it is the sending or
> > receiving
> > > application I
> > > suggest you put SocketSpy between it. You find it
> on
> > user
> > > made page.
> > > Then we are sure in wich application is a bug and
> we
> > can
> > > search deeper.
> > > 
> > > ---
> > > Rgds, Wilfried [TeamICS]
> > > http://www.overbyte.be/eng/overbyte/teamics.html
> > > http://www.mestdagh.biz
> > > 
> > > Thursday, June 4, 2009, 17:58, robertoschler
> wrote:
> > > 
> > > 
> > > > I have an application that opens an
> outgoing
> > > connection to an MJPEG
> > > > streaming server (server push using MIME
> > multi-part
> > > boundary method). 
> > > > With my TWSocket code, I connect fine and
> then I
> > get
> > > an arbitrary
> > > > number of frames until the connection
> appears to
> > stop
> > > receiving data,
> > > > permanently.  The data available event
> never
> > > fires again until I close
> > > > the connection and reconnect.  This
> happens
> > > pretty quick.  Sometimes
> > > > it's a small number of frames (e.g. - 1 to
> 7). 
> > > Other times I get a
> > > > nice chunk of about 30 to 50 frames, but
> always
> > the
> > > data reception
> > > > just dries up.
> > > 
> > > > To make sure the server was not stopping
> > transmission,
> > > I coded up a
> > > > simple example using the included Delphi 6
> > > TClientSocket component.  I
> > > > set it to non-blocking mode which is how I
> use
> > > TWSocket too.  It did
> > > > not exhibit the problem.  It kept
> receiving
> > > frames until I shut down
> > > > the connection.
> > > 
> > > > How can I diagnose and or fix the problem
> with
> > my
> > > TWSocket code?  I would prefer to use that
> instead.
> > > 
> > > > Note: I am using Delphi 6 Pro and ICS
> version 5.
> > > 
> > > > Thanks,
> > > > Robert
> > > 
> > > 
> > >       
> > > > --
> > > > 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
> > > 
> > > --
> > > 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
> > > 
> > 
> > 
> >       
> > --
> > 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
> > 
> 
> 
>       
> --
> 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
> 


      
--
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