Update: see libusb and sync/asyc IO .
I am happy to see this code, as I figure USB devices are going to proliferate. With only a small knowledge of how sockets work, and assuming USB would use a similar protocol, I'm guessing that you have a classic lockup condition, where both ends of the connection are trying to read, or trying to write, at the same time. Nothing gets thru.
You need to get some sort of synchronization going, a protocol, like "over and out",
means you are switching to listening, so the other end should now send.
Possibly, just printing a few newlines on a line by themselves, would signal a protocol shift, by flushing the buffers, or whatever it is doing. I notice in the module's example code, they use alot of newlines. :-)