因为你的全局变量不是你main中的变量呀!你在main中另外定义了一个CSocket Proxy;所以一直对这个局部变量进行初始化!以至于全局变量没有任何操作!去掉main第一行的Socket Proxy;不就好了

解决方案 »

  1.   

    csocket类型的proxy和client必须具有同样的属性。你的程序错误在go函数里面。
    1。client需要创建
    2。client的属性(比如端口)要和proxy一样。
      

  2.   

    UINT Go(void * pParam)
    {
            CSocket Client;
            char Buffer[10240];
            //
            client.Create(PROXYPORT));
             //
            if (!Proxy.Accept(Client))//接受数据,在这里出错!!
    {
    printf("Client connection to Proxy failed\n",GetLastError());
    getch();
    return -1;
    }
            int n = Client.Receive(Buffer,10240);
    }
      

  3.   

    不行吧。你的main( )函数一下子就退出了,程序也就结束了。
    不能保证GO线程能够完成操作吧。
      

  4.   

    还是不行,在运行到client.Create(PROXYPORT);的时候就出错了,
    说map_pp.cpp错误!呜呜,我头都大了!
      

  5.   

    我是节选其中一部分,原来是单线程的,我现在想改为多线程,只是不知道为什么在子线程里面一调用CSocket就出错了!请问你们具体怎么实现多线程的??
      

  6.   

    你最好重载一下 csocket类。然后重新定义虚函数OnAccept,OnReceive等。这样结构会比较好。你的结构有点混乱。
      

  7.   

    你新建的Go线程不是一个窗口线程,CSocket和CAsyncsocket必须在窗口线程下使用。
      

  8.   

    窗口线程我也没有用过, 看看MSDN吧。
    需要什么RUNTIME_CLASS的,MFC的机制我还是比较糊涂。
    我去也看看……为什么那么多人都喜欢用MFC的socket类,socket API很好用啊,
    我都不用Csocket和CAsynsocket了,因为它们是利用窗口的消息
    机制来实现响应消息的,在CAsyncSocket::Create( )里MFC会
    调用CreateWindowEx( ),如果当前线程不是窗口线程,这个调用
    就会失败,然后CAsyncSocket::Create( )也就失败了。