请教socket编程中使用多线程的问题,有简单代码,请高手赐教!
编译通过,在执行的时候程序出错,请高手帮忙看一下,多谢!是在sockServer.Create(5055);时候出错的。
void CMainFrame::OnFilereceive()
{
HWND hWnd=GetSafeHwnd();
AfxBeginThread(ThreadProc,hWnd,THREAD_PRIORITY_NORMAL);
}
UINT ThreadProc(LPVOID param)
{
AfxSocketInit(NULL);
CSocket sockServer;
sockServer.Create(5055);
sockServer.Listen();
CSocket sockRec;
sockServer.Accept(sockRec);
char buff[256];
CString filename;
CString filepath="e:\\vemsn server\\xmlfiles\\test.xml";
//filepath+=filename;
// filepath+=".xml";
UINT Byte;
sockRec.Receive(&Byte,sizeof(UINT));
CFile destFile(filepath, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);
UINT dwRead = 0;
while(dwRead<Byte)
{
byte* data = new byte[1024];
memset(data,0,1024);
UINT dw=sockRec.Receive(data, 1024);
destFile.Write(data, dw);
dwRead+=dw;
}
destFile.Close();
sockRec.Close();
CSocket sock;
sockServer.Accept(sock);
sock.Receive(buff,256);
filename.Format("%s",buff);
int len=filename.GetLength();
filename=filename.Right(len-18);
int pox=filename.Find(".xml");
//filename=filename.Right(len-18);
filename=filename.Left(pox+4);
CString xmlpath="e:\\vemsn server\\xmlfiles\\";
xmlpath+=filename;
destFile.Rename(filepath,xmlpath);
sock.Close();
CString msg=" 文件接收完毕";
msg=filename+msg;
AfxMessageBox(msg);
return 0;
}