我正在阅读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,这样就不会像文本文件那样处理。 –