我正在閱讀PDF文件,以二進制格式打開它。我必須通過套接字將每個字節發送到服務器。我爲此使用了winsock。以下就是我有問題的代碼:如何在二進制模式下讀取併發送CR/LF「x0D x0A」
int Div = (int)file_size/1024;
int Mod = (int)file_size % 1024;
for (int i=0; i<Div; i++)
{
file_block = new char[1024];
myfile.seekg(i*1024);
myfile.get(file_block,1024);
send(theSocket,file_block,1024,0);
}
if (Mod != 0)
{
file_block = new char[Mod];
myfile.seekg(Div*1024);
myfile.get(file_block,Mod);
send(theSocket,file_block,Mod,0);
}
當我閱讀PDF文件,我的程序讀取前4個字節後卡住,即%PDF-1.5
。查看十六進制編輯器中的文件顯示有x0D x0A
這是Carriage Return & Line Feed
的十六進制表示。
這是由於我的程序卡住了原因。我怎麼解決這個問題 ?
你有一個大的內存泄漏,因爲你在每個循環中分配內存,但從不釋放內存。 –
請確保您在**連接的**兩端以二進制模式打開文件 –
缺少重要的代碼,您不清楚如何打開文件。一定要使用ios :: binary,這樣就不會像文本文件那樣處理。 –