Очевидно, что длина в поле Content-Length никак не может задаваться в каких-то там абстрактных размером int-ах, как у вас. Задаётся в байтах. Почитайте длину вывода, на sizeof(int) умножьте, или как-то так. И почему старт-строка не по стандарту, может, потому и Bad Request?