socket programming
the code for sending files is like this : in which i am sending the
contents
in the order :
file size, filename size, file name, file contents
void Sender::SendData(void)
{
CString findFilePath=filePathInformation+"\\*.*";
bWorking=finder.FindFile(_T((LPCTSTR)findFilePath));
while (bWorking)
{
bWorking = finder.FindNextFile();
CString findFileName(finder.GetFileName());
if(findFileName.Compare(".") == 0 || findFileName.Compare("..")
== 0)
{
//CloseSocket();
continue;
}
int returnValue=SetAddress();
if(returnValue==0)
{
CString sendFilePath=finder.GetFilePath();
FILE *filePointer;
//int returnedValue;
if( (filePointer = fopen(sendFilePath, "rb" )) == NULL )
{
cout<<endl<<"File open error";
CloseSocket();
return;
}
else
{
char *fileContentBuffer;
unsigned int bytesRead,fileNameLength;
long fileSize;
//long allocReqNum;
//first send the file size details
fseek(filePointer, 0, SEEK_END); // Move File Pointer to EOF
fileSize=ftell(filePointer); // Get position of File Pointer
rewind(filePointer); // Move File Pointer back to beginning
of file
fileContentBuffer = (char *)calloc(32,sizeof(long));
//returnedValue=_CrtIsMemoryBlock(fileContentBuffer, 32,
&allocReqNum, NULL, NULL);
ltoa( fileSize, fileContentBuffer,10 );
int returnValue = send(mySocket,fileContentBuffer,32,0);
if(returnValue == SOCKET_ERROR)
{
cout<<endl<<"Error in Sending File Length";
CloseSocket();
return;
}
else
cout<<endl<<"File Size Sent Successfully : "<<fileSize;
//long valueReturned=_CrtSetBreakAlloc(allocReqNum);
//delete fileContentBuffer;
free(fileContentBuffer);
//send file name length
fileNameLength=findFileName.GetLength();
fileContentBuffer = (char *)calloc(32,sizeof(int));
char *returnChar=itoa( fileNameLength, fileContentBuffer, 10 );
returnValue = send(mySocket,fileContentBuffer,32,0);
if(returnValue == SOCKET_ERROR)
{
cout<<endl<<"Error in Sending File Details";
CloseSocket();
return;
}
else
cout<<endl<<"File Length Sent Successfully : "<<fileNameLength;
free(fileContentBuffer);
//delete fileContentBuffer;
//Send the file name
char *temporaryBuffer;
fileContentBuffer = (char *)calloc(255,sizeof(char));
temporaryBuffer=findFileName.GetBuffer(fileNameLength);
strcpy(fileContentBuffer,temporaryBuffer);
returnValue = send(mySocket,fileContentBuffer,fileNameLength,0);
if(returnValue == SOCKET_ERROR)
{
cout<<endl<<"Error in Sending in File Name";
CloseSocket();
return;
}
else
cout<<endl<<"File Name Sent Successfully : "<<temporaryBuffer;
free(fileContentBuffer);
//delete fileContentBuffer;
//sending the file
fileContentBuffer = (char *)calloc(fileSize,sizeof(char));
bytesRead=fread(fileContentBuffer,sizeof(char),fileSize,filePointer);
returnValue = send(mySocket,fileContentBuffer,fileSize,0);
if(returnValue == SOCKET_ERROR)
{
cout<<endl<<"Error in Sending File Contents";
CloseSocket();
return;
}
else
cout<<endl<<"File Sent Successfully "<< returnValue<<" bytes";
//delete fileContentBuffer;
free(fileContentBuffer);
}
//returnedValue=_CrtDumpMemoryLeaks();
fclose(filePointer);
CloseSocket();
}
else
{
cout<<endl<<"Error in connecting";
CloseSocket();
return;
}
}
}
and the receiver is getting the data in the same order.
in both of them i am getting the same memory leak errors,
could u help regarding this,
that would be greatful to me,
sirisha.