我想把文件一下传过去,可是只接受到一点数据,请高手指点~~~
我的代码是:

发送端

void CTcpClientDlg::OnSend() 
{
int nErrorCode;
if (m_Socket == NULL)
return; CFile sendFile(_T("ReadMe.txt"),CFile::modeRead); //打开要发送的文件
LONG lenth = sendFile.GetLength(); //得到文件长度
char *pFileData = new char[lenth];

//  CString fileName = _T("ReadMe.txt");
//  int len = fileName.GetLength();
//  char *name = new char[len];
// 
//  for (int i=0; i<len; ++i)
//  {
//  *(name+i) = fileName.GetAt(i);
//  }
// 
//  CFile ToBeSendFile(fileName,CFile::modeRead);

// int fileLenth = sendFile.GetLength();
char pFileLenth[50]; //得到文件信息
_itoa(lenth,pFileLenth,10);
 
send(m_Socket,pFileLenth,sizeof(pFileLenth),0);//发文件长度

// send(m_Socket,name,len,0);


sendFile.Read(pFileData,lenth);
send(m_Socket,pFileData,lenth,0);//发送文件数据 sendFile.Close();}
接收端
void CReqSocket::OnReceive(int nErrorCode)
{
char pBuffer[20];
memset(pBuffer,0,20);
int iLen; if (READFILELENTH == index) //读文件长度
{
if ( (iLen=Receive(pBuffer, sizeof(pBuffer))) == SOCKET_ERROR )
{
iLen = GetLastError();
wsprintf(pBuffer, "Recv Data Error:%d", iLen);
AfxGetMainWnd()->MessageBox(pBuffer, "接收错误", MB_OK|MB_ICONERROR);
} index++;
BufferSize = atoi(pBuffer);
}
else if (READFILENAME == index) //读文件名字
{
iLen = Receive(pBuffer, sizeof(pBuffer));
FileName = pBuffer; index++;
}
else if (READFILEDATA == index) //读文件数据
{
char *pFileData = new char[BufferSize];

CFile destFile("C:\\Test.txt",CFile::modeCreate | CFile::modeWrite);
destFile.Seek(0,CFile::begin);

iLen = Receive(pFileData, sizeof(pFileData));//为什么不正确!!!!!!!! destFile.Write(pFileData,BufferSize);
destFile.Close(); index++;
}
else
{
return;
} CAsyncSocket::OnReceive(nErrorCode);}