Ein Google-Nutzer
I reverse-engineered the protocol used by the App. Turns out, the author makes assumptions about TCP connections that should never be made. Simply put, the author assumes that if the App writes a chunk of X bytes 3 times, then the next 3 read operations on the server side will each return a chunk of X bytes. That, in general, is false. Let's talk about an example. Say you press Buttons 1 to 3. The App will send the following data: "update 1update 2update 3". Note, that each of the update commands is not terminated by a linefeed character. The server will usually receive the data in 3 chunks, namely "update1", "update 2", and "update 3". However, when packet loss occurs, then the TCP/IP stack on your Smartphone will "merge" the 2nd and 3rd command (due to Nagle's algorithm) and the server actually receives only 2 chunks, namely "update 1" and "update 2update 3". The second chunk will not be interpreted correctly by the server. There is a reason, why in SMTP, for example, every command is terminated by linefeed character. The protocol of this app needs to be reworked, e.g. by terminating each command with a linefeed.
4 Personen fanden diese Bewertung hilfreich