MyWikkaSite : MFCTIP1

HomePage :: Categories :: PageIndex :: RecentChanges :: RecentlyCommented :: Login/Register
CSocket 과 CAsyncSocket에서 Thread문제

CSocket / CAsyncSocket 을 생성한 곳이 아닌 다른 Thread로 넘겨 처리할 경우
CSocket 이 가진 Thread State 가 변해 Error가 발생한다. (Assertion 대화상자가 나타난다.)

즉, 메인 스레드에서 Listen 을 하여 클라이언트 Socket 을 Accept 하고,
메인 스레드가 다른 스레드를 생성하여, 생성한 스레드가 Socket 전송을 맡길 경우
문제가 발생한다.


방법1. Attach, Deatch
메인 스레드에서 Accept 한 Socket 을 Deatch 시키고, 이때 전달받은 handle 을 스레드 로
넘긴다. 스레드 에서는 handle 을 Attach 시켜 CSocket/CAsyncSocket 개체 인스턴스를 만들어
사용하면 된다.

방법2. 스레드에서 원격지로 추가로 Socket 연결을 맺는다.
메인 스레드에서 다른 스레드로 원격지의 주소와 포트 번호를 전달한다.
스레드는 전달받은 정보를 이용해서 새롭게 원격지와 소켓 연결을 시도하고
Socket을 전달하면 된다.



cf) http://www.debuglab.com/knowledge/csocket.html

There are no comments on this page. [Add comment]

Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by Wikka Wakka Wiki 1.1.6.2
Page was generated in 0.0071 seconds