Что-то я понять не могу, nsize - это кол-во байт, полученных от сервера, после этого в буфер читается новая строка, очевидно, произвольного размера, а серверу отдается строка размером снова nsize, почему?
Далее, &buff[0] - это гениально, попахивает полным незнанием С.