While we currently have a static path instead of one generated with Autotools, this at least is congruent to what we have in the Python library.
As the underlying C functions, send/recv on ruby sockets are not guaranteed to send/recv all requested bytes. Use wrapper functions to make sure we get all bytes needed.