VC6开发的多线程DLL,将DLL代码直接加在VC中使用没问题。
VB6,VC6调用异常
测试是在同一电脑下启动SERVER和CLIENT线程实现连接异常状况为:1.若我先启动服务端线程监听端口没问题,但我启动客户端线程后异常退出。我分析后发现在执行sockClient.Create();时异常的2.我先启动客户端线程后启动服务端线程后异常退出。我分析后发现在执行sockServer.Create(4002);时异常的.异常时提示框为:Microsofte Visual C++ Library
program:.....某某.exe
abnormal program termination在两台机上分别运行服务端和客户端没问题为何啊!

解决方案 »

  1.   

    在工作线程中使用CSocket,是否跨线程了?
      

  2.   

    无跨线程UINT CInterface::ThreadedClient(LPVOID lParam)
    {
    if (!AfxSocketInit())

    AfxMessageBox("Server初始化失败"); 
    return FALSE; 
    } CSocket sockClient; sockClient.Create(); if( !sockClient.Connect("192.168.0.111",4002))
    {
    AfxMessageBox("Socket连接失败");
        return FALSE;
    }
    else
    TRACE( "客户端与服务器已建立连接\n"); do 
    { } while(1); sockClient.Close(); return 0;
    }
    UINT CInterface::ThreadedServer(LPVOID lParam)
    {   
    if (!AfxSocketInit())

    AfxMessageBox("Server初始化失败"); 
    return FALSE; 
    }    CSocket m_Server; if(!m_Server.Create(4002))
    {
         AfxMessageBox("Listen Socket create error");
         return 0;
    } if(!m_Server.Listen()) 
    {
    AfxMessageBox("m_server.Listen ERROR");
        return 0;
    } CSocket sockConnection;    if(! m_Server.Accept(sockConnection))
    {
       AfxMessageBox("Socket接受连接失败");
       return FALSE;
    }
        else
    TRACE( "服务端接受客户端连接\n"); m_Server.Close(); while(1)
    {
     
    }
    sockConnection.Close(); return 0;
    }即使我把程序改成这样还是会有异常退出