我想用辅助线程实现客户机和服务器之间的数据传输,不知为什么在主线程中实现连接在辅助线程中实现数据传输不行,可能是我的方法不对。现在我在辅助线程中做连接和数据传输也有些问题。执行第一次时是对的,可第二次就有错。辅助线程如下,执行第二次时好象是msg.Serialize(*m_pArchiveOut);出错。
请个位大侠赐教,介绍些参考书也行。
CString m_strServer;
int m_nPort;
CClientSocket* m_pSocket;
CSocketFile* m_pFile;
CArchive* m_pArchiveIn;
CArchive* m_pArchiveOut;
CClientView *pView;UINT ThreadSock(LPVOID lpParam)
{

m_nPort=8000;
m_strServer="jd1";
if(m_pSocket==NULL)
{
     m_pSocket=new CClientSocket();
     if(!m_pSocket->Create ())
     {
delete m_pSocket;
m_pSocket=NULL;
AfxMessageBox("创建套接字错误");
return -1;
     }
     else
AfxMessageBox("创建套接字成功",MB_OK);     if(!m_pSocket->Connect (m_strServer,m_nPort))
    {
AfxMessageBox("连接错误");
delete m_pSocket;
m_pSocket=NULL;
return -1;
    }
    else
AfxMessageBox("连接成功",MB_OK);

    m_pFile=new CSocketFile(m_pSocket);
    m_pArchiveIn=new CArchive(m_pFile,CArchive::load);
    m_pArchiveOut=new CArchive(m_pFile,CArchive::store);
}   if(m_pArchiveOut!=NULL)
  {
CMsg msg;
memcpy(msg.lpDIBBits , pView->m_lpDIBits, 640*480);
TRY
{
msg.Serialize(*m_pArchiveOut);
m_pArchiveOut->Flush ();
}
CATCH(CFileException,e)
{
m_pArchiveOut->Abort ();
delete m_pArchiveOut;
m_pArchiveOut=NULL;
CString strTemp;
strTemp="服务器重置连接!";
AfxMessageBox(strTemp,MB_OK);
}
END_CATCH
         }
     return 0;
}