안녕하세요 개발 한달차 프로그래머입니다. 하하..
한 프로그램에서 프로토콜을 추가하던중 문제가 생겼습니다.
메인쓰레드에서 init 함수(소켓이 있으면 닫고, 없으면 생성) 를 호출하는 과정에서
void PASCAL CAsyncSocket::KillSocket(SOCKET hSocket, CAsyncSocket* pSocket)
{
ASSERT(CAsyncSocket::LookupHandle(hSocket, FALSE) != NULL);
_AFX_SOCK_THREAD_STATE* pState = _afxSockThreadState;
CAsyncSocket::DetachHandle(hSocket, FALSE);
if (pState->m_hSocketWindow != NULL)
{
::PostMessage(pState->m_hSocketWindow, WM_SOCKET_DEAD,
(WPARAM)hSocket, 0L);
CAsyncSocket::AttachHandle(hSocket, pSocket, TRUE);
}
}
요 부분에서 close하던중 죽고 맙니다ㅜ..
인터넷에 찾아보니 쓰레드를 생성한 곳에서 close를 시키라는데 일단 이것저것 해봣는데 잘 이해가 안가서요..
처음 초기화 할때는 정산적으로 소켓이 생성되서 통신이 되는데 재기동할때 다시 클로즈 할때 문제가 발생되네요.
조언좀 부탁드립니다!