First of all, thank you for you work it's really great and usefull.
Here's the problem I found. In the Java server code, BinaryRequestProtocol class, the method receive(Socket) creates a new BufferedInputStream to read from the socket's own stream.
This BuggeredStream is then thrown away, once the Variant is read.
The problem is that when the Excel AddIn fires a lot of data at the server very quickly, that BufferedStream starts reading data from the next Variant, and when it's thrown away we loose some bytes.
There should be 1 and only 1 BufferedInputStream for each Socket.
I guess the same goes the other way around, for the send functions.