Я делаю упражнение о прокси-сервере.У меня есть некоторые проблемы при кэшировании в Proxy Server.Следующий исходный код используется, когда сервер отправляет ответ прокси-серверу, и прокси пересылает его клиенту.Это нормально.
//that code is ok
fstream File;
while (P->isClientClose == FALSE && P->isServerClose == FALSE){
memset(Data, 0, 1024);
int length = recv(*(P->SERVER), Data, sizeof(Data), 0);
if (length <= 0)
break;
length = send(*(P->CLIENT), Data, length, 0);
if (length <= 0)
break;
}
Но когда я пытаюсь записать HTTP-ответ в файл, а затем прочитать все символы из файла для отправки клиенту, у меня возникает проблема.браузер сказал: ERR_CONTENT_DECODING_FAILED
Я проверяю, как работает прокси-кеш, но я не могу понять, где ошибка.Даже когда я создаю строку Temp (Data) и использую send (* (P-> CLIENT), Temp.c_str (), length, 0), клиент все равно говорит об этой ошибке.Пожалуйста, помогите мне.: D
//that code is error
fstream File;
while (P->isClientClose == FALSE && P->isServerClose == FALSE){
memset(Data, 0, 1024);
int length = recv(*(P->SERVER), Data, sizeof(Data), 0);
if (length <= 0)
break;
File.open("test.dat", ios::out|ios::binary);
File << Data;
File.close();
File.open("test.dat", ios::in|ios::ate|ios::binary);
ifstream::pos_type pos = File.tellg();
int size = pos;
cout << "size: " << size << endl;
char *pChars = new char[size+1]{};
File.seekg(0, ios::beg);
File.read(pChars, size);
File.close();
length = send(*(P->CLIENT), pChars, length, 0);
delete[]pChars;
if (length <= 0)
break;
}