class CSockThread : public CWinThread { // ... Other function and member declarations protected: CSocket m_sConnected; };SOCKET hConnected;BOOL CSockThread::InitInstance() { // Attach the socket object to the socket handle // in the context of this thread. m_sConnected.Attach(hConnected); return TRUE; }// This listening socket has been constructed // in the primary thread. void CListeningSocket::OnAccept(int nErrorCode) { // This CSocket object is used just temporarily // to accept the incoming connection. CSocket sConnected; Accept(sConnected); // Detach the newly accepted socket and save // the SOCKET handle. hConnected = sConnected.Detach(); // After detaching it, it should no longer be // used in the context of this thread. // Start the other thread. AfxBeginThread(RUNTIME_CLASS(CSockThread)); }
{
// ... Other function and member declarations
protected:
CSocket m_sConnected;
};SOCKET hConnected;BOOL CSockThread::InitInstance()
{
// Attach the socket object to the socket handle
// in the context of this thread.
m_sConnected.Attach(hConnected); return TRUE;
}// This listening socket has been constructed
// in the primary thread.
void CListeningSocket::OnAccept(int nErrorCode)
{
// This CSocket object is used just temporarily
// to accept the incoming connection.
CSocket sConnected;
Accept(sConnected); // Detach the newly accepted socket and save
// the SOCKET handle.
hConnected = sConnected.Detach(); // After detaching it, it should no longer be
// used in the context of this thread. // Start the other thread.
AfxBeginThread(RUNTIME_CLASS(CSockThread));
}