我是个初学者,有一个Socket完成两个机子传输的问题,已经解决的差不多了。可以个小问题把我绊住了:在我的程序启动后,SEND端和RECEIVE端开始通信,transmit.exe(我的用户进程)出现在任务管理器中,可退出时OnCancel()中只有CDialog::OnCancel(),只能注销对话框,我的进程还在,我该添加什么来注销进程呢?(所有使用的线程我都挂掉了)有代码的和提出合理建议的,我都表示感谢!谢谢!!

解决方案 »

  1.   

    在使用多线程的通讯中,可能会因为线程中的socket处于阻塞状态而是进程不能结束
    你试试在退出前关闭所有的socket,即调用Close方法
      

  2.   

    to:wangjinwang(王进) 
    我单机调试也不行,何况我已close了csocket的所有实例,望再帮助一下吧!谢谢!
      

  3.   

    要把套接字close,并且要结束socket的线程。HANDLE         m_hThread; //线程句柄
    int ExitThread()
    {
    if (TerminateThread(m_hThread, 4))
    {
    DWORD dwExitCode =0;
        while(TRUE)
    {
    GetExitCodeThread(m_hThread, &dwExitCode);
    if (dwExitCode != STILL_ACTIVE)
    break;
    Sleep(10);
    }
    CloseHandle(m_hThread);     
    } return 0;
    }