Hello Wilfried, Just for the record everything works fine. Hopefully someone else can benefit from my little journey here. I no longer check RcvdCount and simply check the byte count returned by ReceiveStr. It works great.
This is a relief because ICS is my preferred choice for socket work. Thanks for listening, 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:40 PM > > 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 > -- 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