problem when reading from large binary file
do you see anything wrong this this code. sSend is a class that encapsulates the winsock API.
Code:
ifstream openfile((const char *)FileName.c_str(),ios::in | ios::binary);
char tmpContent[10000] = {0};
int left = 0;
if(openfile.is_open())
{
//int length = openfile.tellg();
while(!openfile.eof())
{
left = GetFileLen((char *)FileName.c_str()) - openfile.gcount();
if(left < 2048)
{
openfile.read(tmpContent, left);
}
else
{
openfile.read(tmpContent, 2048);
}
//openfile.read(tmpContent, left);
sSend.SendData(tmpContent);
}
sSend.Close();
}
Code:
int GetFileLen(char *path)
{
ifstream TheFile((const char *)path, ios::in | ios::ate | ios::binary);
return TheFile.tellg();
}