Я пишу веб-прокси, и он отлично работает с веб-страницами, которые могут быть переведены в текст ASCII. Однако, когда я пытаюсь просмотреть страницы с двоичными данными (Youtube.com - это тот, который я использовал), происходит утечка памяти где-то, и те же самые несколько символов будут повторяться снова и снова в конце строк I 'посылает клиенту (и будет отображаться в других местах, где они явно не должны быть).Сбой памяти сокета только с двоичными данными
Ниже приведена соответствующая часть моего кода. SendHTTPResponse - это функция, которая отправляет ответ веб-страницы клиенту с использованием прокси-сервера и работает правильно.
У кого-нибудь есть понимание?
int numBytes;
char temp[3000];
memset(temp, '\0', 3000);
numBytes = Read(internetSocket, temp, 2999);
while (errno = 0, numBytes > 0 || errno == EINTR)
{
SendHTTPResponse(socket, temp, numBytes);
memset(temp, '\0', 3000);
numBytes = Read(internetSocket, temp, 2999);
}
Здесь не достаточно информации или кода, чтобы ответить на этот вопрос. Вам нужно выполнить некоторую отладку и сузить ее. –
Вам не нужно принимать numBytes == 0 как действительное возвращаемое значение, то есть ничего не было в буфере, но поток все еще открыт, и вы должны продолжать пытаться читать? –
errno = 0, numBytes> 0 ???? что это? почему вы используете такой запятый? и ПОЧЕМУ вы устанавливаете errno на 0? –