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