in reply to IO::Socket not reading from server?

You don't show us what DBIServerEncapQuery() is doing. I'll bet it isn't adding a newline onto the end of the query strings. That would mean that
print $DBIClient "$DBIServerQuery";
is sending a string down the line, but if the receiving end is expecting a complete line (i.e., one with a trailing "\n"), it's going to block.

Try

print $DBIClient $DBIServerQuery, "\n";