多线程网络编程,高手指教
// sd.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "sd.h"
#include "Afxmt.h"
#include "Afxsock.h"
//#include "drecordclient.h"
//#include "archivesock.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// The one and only application object
CWinApp theApp;
using namespace std;
CSocket *psock;
CSocketFile *file;
CArchive *arIn;
CArchive *arOut;
CEvent cs;
CString result;
UINT printfz(LPVOID pParam){
(*arOut)<<CString("zhangmi");
arOut->Flush();
Sleep(20);
(*arOut)<<CString("lovew");
arOut->Flush();
Sleep(20);
(*arIn)>>result;
AfxMessageBox(result);
arOut->Close();
arIn->Close();
file->Close();
psock->Close();
cs.SetEvent();
return 0;
}
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
else
{
}
AfxSocketInit( NULL );
///****
psock=new CSocket;
psock->Create();
psock->Connect("127.0.0.1",7000);
file=new CSocketFile(psock);
arOut=new CArchive(file,CArchive::store);
arIn=new CArchive(file,CArchive::load);****///
CWinThread *pThreadA;
cs.ResetEvent();
pThreadA=AfxBeginThread(printfz,NULL,THREAD_PRIORITY_NORMAL);
WaitForSingleObject(cs,INFINITE);
delete arIn;
delete arOut;
delete file;
return nRetCode;
}
不能正常工作,当把 ///****
psock=new CSocket;
psock->Create();
psock->Connect("127.0.0.1",7000);
file=new CSocketFile(psock);
arOut=new CArchive(file,CArchive::store);
arIn=new CArchive(file,CArchive::load);****///
放在辅助线程则工作良好,我怀疑是CSocket不能在进程间共享,那位高手帮我一下