MFC下我用多线程在服务器端建立连接(先试验建立一个)。在CSocket的派生类CMySocket的OnAccept()回调函数中,使用代码:
m_ListenSocket.Accept(m_ConnectSocket);//接受客户端连接m_ConnectSocket
CMyThread* m_pThread=AfxBeginThread(//产生用户界面线程m_pThread
RUNTIME_CLASS(CMyThread),
THREAD_PRIORITY_NORMAL,
0,
CREATE_SUSPENDED);
m_pThread->m_hSocket=m_ConnectSocket.Detach();//将客户端连接的句柄赋给CMyThread类的SOCKET类型的句柄m_hSocket
m_pThread->RusumeThread();//启动用户界面线程在用户界面线程类CMyThread为CWinThread的派生类,其中定义了SOCKET类型的句柄m_hSocket,且定义了CMySocket类的对象m_Socket,在CMyThread类的InitInstance()函数中用如下代码:
m_Socket.Attach(m_hSocket);//将客户连接套接字的句柄附着在线程类的CMySocket对象上。以上是按照书上所说的,在线程间不能直接传递套接字,而只能传递套接字句柄的方法来在用户界面线程中进行网络通信的。此方法在编译没有出错,但在服务器端Listen后,当客户端Connect()后,出错如下:某一内存,好象是在cdcdcded处不能为"Read",从而终止了运行。请问大侠,这是怎么回事?最好再请指点一下如何在多线程下使用ODBC?不用多线程的环境下的ODBC问题我已解决。在多线程下,我需要使用两个记录集,两个线程,每个线程中各操作一个记录集,使用SQL Server2000 DBMS。请问如何设计?紧急,请指点。解决问题立即送分!感谢!
m_ListenSocket.Accept(m_ConnectSocket);//接受客户端连接m_ConnectSocket
CMyThread* m_pThread=AfxBeginThread(//产生用户界面线程m_pThread
RUNTIME_CLASS(CMyThread),
THREAD_PRIORITY_NORMAL,
0,
CREATE_SUSPENDED);
m_pThread->m_hSocket=m_ConnectSocket.Detach();//将客户端连接的句柄赋给CMyThread类的SOCKET类型的句柄m_hSocket
m_pThread->RusumeThread();//启动用户界面线程在用户界面线程类CMyThread为CWinThread的派生类,其中定义了SOCKET类型的句柄m_hSocket,且定义了CMySocket类的对象m_Socket,在CMyThread类的InitInstance()函数中用如下代码:
m_Socket.Attach(m_hSocket);//将客户连接套接字的句柄附着在线程类的CMySocket对象上。以上是按照书上所说的,在线程间不能直接传递套接字,而只能传递套接字句柄的方法来在用户界面线程中进行网络通信的。此方法在编译没有出错,但在服务器端Listen后,当客户端Connect()后,出错如下:某一内存,好象是在cdcdcded处不能为"Read",从而终止了运行。请问大侠,这是怎么回事?最好再请指点一下如何在多线程下使用ODBC?不用多线程的环境下的ODBC问题我已解决。在多线程下,我需要使用两个记录集,两个线程,每个线程中各操作一个记录集,使用SQL Server2000 DBMS。请问如何设计?紧急,请指点。解决问题立即送分!感谢!
助我解决问题,立即奉送100分。
紧急!感谢!