--Discovered that rover_server_recv_and_print() was never receiving a full message buffer (13312 bytes), the recv() calls were returning after between 1448 and 3176 bytes.  Restructured rover_server_recv_and_print() to use the recvall() function that I use to receive the image frames as unsigned char buffers.  This seems to be working well--I'm receiving all of the messages I'm expecting to receive, and none are mangled.