Поделиться через


CSocket::Attach

Эта функция-член вызывается, чтобы вложить дескриптор hSocket к объекту CSocket.

BOOL Attach( 
   SOCKET hSocket  
);

Параметры

  • hSocket
    Содержит дескриптор гнезду.

Возвращаемое значение

Ненулевой если функция успешно.

Заметки

Дескриптор SOCKET хранится в элементе данных m_hSocket объекта.

Дополнительные сведения см. в разделе Windows sockets: Использование сокета с архивами.

Пример

class CSockThread : public CWinThread
{
public:
   SOCKET m_hConnected;

protected:
   CChatSocket m_sConnected;

   // remainder of class declaration omitted.
BOOL CSockThread::InitInstance()
{
   // Attach the socket object to the socket handle 
   // in the context of this thread.
   m_sConnected.Attach(m_hConnected);
   m_hConnected = NULL;

   return TRUE;
}
// This listening socket has been constructed 
// in the primary thread. 
void CListeningSocket::OnAccept(int nErrorCode)
{
   UNREFERENCED_PARAMETER(nErrorCode);

   // This CSocket object is used just temporarily 
   // to accept the incoming connection.
   CSocket sConnected;
   Accept(sConnected);

   // Start the other thread.
   CSockThread* pSockThread = (CSockThread*)AfxBeginThread(
      RUNTIME_CLASS(CSockThread), THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);
   if (NULL != pSockThread)
   {
      // Detach the newly accepted socket and save 
      // the SOCKET handle in our new thread object. 
      // After detaching it, it should no longer be 
      // used in the context of this thread.
      pSockThread->m_hConnected = sConnected.Detach();
      pSockThread->ResumeThread();
   }
}

Требования

Header: afxsock.h

См. также

Ссылки

Класс CSocket

Диаграмма иерархии

CAsyncSocket::Attach