18,356
社区成员
发帖
与我相关
我的任务
分享
m_hSocketConn = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (m_hSocketConn == INVALID_SOCKET)
{
m_hSocketConn = NULL;
return FALSE;
}
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(nPort);
if (bind(m_hSocketConn, (SOCKADDR*) &addrSrv, sizeof(addrSrv)) == SOCKET_ERROR)
{
closesocket(m_hSocketConn);
m_hSocketConn = INVALID_SOCKET;
return FALSE;
}
m_hAccept = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)AcceptThread, this, 0, NULL);
m_bAccept = TRUE;
void CScanagentTestDlg::AcceptThread(LPVOID lParam)
{
CScanagentTestDlg *pDlg = (CScanagentTestDlg*)lParam;
SOCKADDR_IN addrClient;
int nLen = sizeof(SOCKADDR);
while(pDlg->m_bAccept)
{
//AfxMessageBox(L"Listen");
Sleep(100);
if (listen(pDlg->m_hSocketConn, 1) == SOCKET_ERROR)
{
closesocket(pDlg->m_hSocketConn);
pDlg->m_hSocketConn = INVALID_SOCKET;
return;
}
if(pDlg->m_hSocketServer == INVALID_SOCKET)
pDlg->m_hSocketServer = accept(pDlg->m_hSocketConn, (SOCKADDR*)&addrClient, &nLen);
//pDlg->m_bAccept = FALSE;
}
}