Hello Hoby,

If PutDataInSendBuffer and Send 0 at the end makes a difference then you
probably have a problem in the receiver. Same reason as the reason it
depent from machine to machine. You can try also with SocketSpy, if it
also make a difference then you sure have to check over there.

- You mention mulitthreaded = 'True. This means that the TWSocket is
  Created in Execute method of a thread, or Ataccehd to a tread. Did you
  do one of both ?
- Are you sure never message pump is called from in OnDataAvailable
  method, or any other method of TWSocket ?

Rgds, Wilfried [TeamICS]

Friday, July 28, 2006, 23:32, Hoby Smith wrote:

> Hello.  Well, ultimately, here is my solution.

> This appears to work 99.9% of the time, maybe 100%.  There was one failure,
> but not sure if it was a related problem... ;)

> Oddly, turning on the TWSocket MultiThreaded property tends to alleviate the
> majority of symptoms.  As I understand, the only major difference when
> MultiThreaded is on is that the ClientSocket utilizes its own messaging
> interface?  Right?

> As for the issue I mentioned in the last email I posted, I solved the
> sequencing issue this way.  Previously, I had a global "send packet"
> routine, wrapped in a Critical Section for thread safety.  I use a single
> Global send routine so that I can gather statistics in one place (total
> bytes sent, total packets sent, total session bytes, etc).  Since the
> MultiThreaded message loop was picking up responses before I was prepared to
> receive them, I created an additional couple of global routines.  One is a
> global "post packet" routine, which processes the packet, but uses
> PutDataInSendBuffer to prepare and que up the outbound traffic (framing,
> encryption, etc), instead of sending it immediately.  Then, when I am
> prepared to handle any related responses, I call a new global "Send Buffer"
> procedure, that simply issues a 0 byte Send on the ClientSocket to begin
> sending the que'd data.  I then changed the sequence order sensitive
> handshaking routines to use the PostPacket / SendBuffer routines instead.

> This approach has appeared to fix the issue sufficiently.  I am perplexed as
> to the nature of the issue itself, but for now, this will suffice.  The
> scenario of both programs (client and server) being on one system is never
> going to occur during a "live production" environment.  Solving this issue
> is really only relevant for development, testing and demonstration purposes.

> None-the-less, I am concerned that the surfacing of this issue might reflect
> some deeper logic flaw in the system as a whole.  

> Does this solution sound appropriate?  It appears to work fine.  And does
> the problem issue sound like it should occur at all?  Or does it sound like
> I have done something really BAD?  I still can't get over the fact that it
> works fine and never occurs on the proverbial "my machine"... :)

> Thanks...

> Hoby

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