服务端的接收代码我是这样写的,不知到对不对,我怀疑就错在这里:
int signal=0;
char lpbuflength[1];
char lpbufname[256];
void CNewSocket::OnReceive(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
if(signal==0)
{
memset(lpbuflength,0,sizeof(lpbuflength));
Receive((void*)lpbuflength,1,0);
signal++;
return;
}//接收1字节表示要读的文件名长度
if(signal==1)
{
memset(lpbufname,0,sizeof(lpbufname));
int x=Receive((void*)lpbufname,(int)lpbuflength[0],0);
signal++;
return;
}//接收文件名
if(signal==2)
{
strcat(FilePath,lpbufname);
CFileException e;
CFile file;
if(!file.Open(FilePath,CFile::modeCreate and CFile::modeWrite and CFile::modeNoTruncate,&e))
{
#ifdef _DEBUG
afxDump<<"File Could Not Be Opened!"<<e.m_cause<<"\n";
#endif
}
char lpbuf[10000];
memset(lpbuf,0,sizeof(lpbuf));
int length;
BOOL flag2=TRUE;
do{
length=Receive((void*)lpbuf,10000,0);
file.Write(lpbuf,length);
if(length!=10000)
flag2=FALSE;
}
while(flag2);