Мне нужно перевести CSocket в синхронный режим.
Вот к примеру я хочу поместить accept в отдельный поток. Я делаю это вот так.
UINT accept_client(LPVOID lpParam )
{
CSocket pSocket;
CSocket *m_main =(CSocket*) lpParam;
for(;;)
m_main->Accept(pSocket);
return 0;
}
BOOL CservDlg::OnInitDialog()
{
CDialog::OnInitDialog();
..............
AfxSocketInit();
return TRUE; // return TRUE unless you set the focus to a control
}
void CservDlg::OnBnClickedButton1()
{
CSocket ServerSocket;
ServerSocket.Create(500,SOCK_STREAM,NULL);
ServerSocket.Bind(500, "127.0.0.1");
ServerSocket.Listen();
AfxBeginThread(*accept_client,(void*)&ServerSocket);
}
Мне нужно, чтобы после запуска потоковой функции accept_client после строки m_main->Accept(pSocket) поток подвисал. И чтобы эта строка выполнялась еще раз только после подключения клиента. Подскажите каким образом перевести сокет в блокирующий режим?
Узнал, что для реализации синхронного сокета при многопоточности надо использовать методы Attach и Detach. Вот только у меня не получается это реализовать. Можете тыкнуть пальцем как это сделать?