I am using ICS in a 32 bit replacement of a 16 bit application that operates a 
laboratory instrument that uses TCP/IP.  It is working well except for an 
occaisional failure to catch all of the packets sent after a data collection.  
The instrument sends a header packet followed by 49 data packets.  The 
instrument does not wait for the host computer to acknowledge each packet.  
Using Ethereal, I see two packets of 1408 data bytes each from the instrument 
followed by an ACK from the host computer, then a single 1408 byte packet from 
the instrument and an ACK from the host.  This pattern repeats until all 49 
packets have been sent.

Most of the time, this works.  Sometimes, especially if the host is busy, the 
host ends up one packet short of the complete message.

I call Receive() on every OnDataAvailable and store the data in a preallocated 
buffer, incrementing the pointer passed to Receive() by the number of bytes 
transferred so that no copying is needed after Receive to assemble the packets.

There are about 20 - 25 ms between the two packets in a pair.

Is the server (instrument) behaving acceptably?  Is there anything I can do to 
better accomodate it?

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