请教:不同线程间如何操作同一个Socket
sayno 2003-07-09 05:56:29 诸位老大:
我有一个Socket链接(主线程中一个CSocket对象),需要在另一个独立的线程中关闭(或重新连接),但在线程中总是异常(向外发送是正常的,Close和Connect异常),请教了一位老大,他说线程中的映射表是独立的,找不到另一个线程中的Socket句柄和window句柄,但如果我在子线程中创建该CSocket对象,在主线程中又无法操作,请教诸位,这个问题应如何解决?以下是示例代码:
...
CSocket sockTest;
UINT SockClose(LPVOID lParam);
void CTestDlg::OnSocktest()
{
if(sockTest.Create()!=0)
{
if(sockTest.Connect("xxx.xxx.xxx.xxx",5000))
Sleep(10);
}
AfxBeginThread(SockClose,(LPVOID)NULL);
}
UINT SockClose(LPVOID lParam)
{
...
Sleep(1000) ;
sockTest.Close();
...
return 0;
}