Create()都出错的话,就应该是没有初始化socket DLL了。
另外,多线程中使用CSocket可能会有无尽的麻烦。

解决方案 »

  1.   

    1。请问怎样初始化socket
    2。为什么不在线裎中使用CSocket 的话,不需要初始化?
    谢谢,一顶给分
      

  2.   

    用AfxSocketInit();初始化
    不在线程中使用也需初始化
      

  3.   

    MFC的CSocket和CAsyncSocket类型在多线程下使用会有问题,
    建议使用window API
      

  4.   

    CSocket对象不要跨线程传递就可以了。传递前Detach下一个SOCKET句柄再传过去Attach。
      

  5.   

    我是在线程内定义,
    int CSendFileTread::Run() 
    {       
             AfxSocketInit()
             CSocket ClientSocket;
    ClientSocket.Create();//这句出错
    ClientSocket.Connect(m_strRemoteAddress,m_URemotePort); 
    ClientSocket.Send("ddd",4); 
    return CWinThread::Run();
    }AfxSocketInit()初始化也不行。
      

  6.   

    在线程里面调用Socket函数是需要初始化:
    按照MSDN的说法,初始化Winsock2.2这样做:
    BOOL InitSockDll()
    {
        WORD wVersionRequested;
        WSADATA wsaData;

        wVersionRequested = MAKEWORD( 2, 2 );
        
        if(WSAStartup(wVersionRequested,&wsaData)!=0)
    return FALSE;
     
        if(LOBYTE(wsaData.wVersion) != 2 ||HIBYTE(wsaData.wVersion) != 2)
        {
    WSACleanup( );
    return FALSE; 
        }    return TRUE;
    }
      

  7.   

    WSAStartup 初开始化成功,但还是不行
      

  8.   

    多线程中使用CSocket真的会有无尽的麻烦。
      

  9.   

    查看函数的返回代码,以确定是什么原因.
    GetLastError().
      

  10.   

    你的CSendFileTread类是不是一个窗口线程类呢?
    如果不是,就不要在这个线程里用CSocket和CASyncSocket.
      

  11.   

    m_ClientSocket.Create();看看返回什么值
    ,是不是没有建立成功,下句对其调用出错
        m_ClientSocket.Connect(m_strRemoteAddress,m_URemotePort);