В memcpy есть опечатка, ссылающаяся на buffe вместо буфера, и хотя возможно, что она появляется только в посте, а не в вашем реальном коде (я не верю, что он будет скомпилирован с ним), если это тогда это определенно проблема.
ОБНОВЛЕНИЕ: Хотя другие ответы предполагают, что может быть нулевой байт, в спецификации заголовка png нет места, где нулевой байт должен быть частью заголовка, поэтому единственное место, где он может быть, это тело, но так как вы данные не поступают, тогда единственным вариантом может быть, если это первая вещь в теле, что, на мой взгляд, на самом деле является задним регистром, так что вы можете попробовать использовать другой источник информации, такой как другое изображение или другой URL, и если проблема сохраняется на всех png-изображениях, тогда это что-то между printf и заголовком (и поэтому, если в заголовке есть нулевой байт, то это в любом случае стоит инвазировать).
Однако обратите внимание, что после букв PNG следует CRLF, а затем EOF, и хотя было бы интересно, если бы у printf возникла проблема, все же, если это проблема, то дамп в файл также не должен быть решением. если вы не откроете его с помощью программы просмотра png.
На самом деле вы не включили свой источник сокетов, и, таким образом, если код, который вы написали самостоятельно, убедитесь, что он не останавливается на первом EOF, поскольку он является частью заголовка png.