Tried to implement retr. Looks like the reason it didn't work with the Drone SDK (and this is tested with another ftp server) is that the SDK does not expect as quick a response as it gets when running on the same machine.
Several hours later, I'm an idiot; for some reason, despite the fact that using another FTP client corroborated the idea that it was the Drone SDK and not my code at fault (I expect my testing was faulty), it turns out that the problem involved my having sent an extra null character at the end of two of the messages. So now the FTP server runs and sends the drone its version.