本帖最后由 VisualEleven 于 2011-12-24 00:56:20 编辑

解决方案 »

  1.   

    共三台计算机协作,客户端计算机为Client,两个服务端计算机为 CMDServer和DATAServer。
    Client连接DATAServer 上的两个端口,这两个端口分别接受命令和发送数据。Client接到CMDServer 发送过来的数据后,经过处理将命令转发给DATAServer。
    DATAServer接受到命令处理,再给Client发送数据。Client接收到数据后存盘。
    -------------------------------------
    你的代码没有看,太长,而且又是用CSocket写的...
    你的CLient开三个线程,其中二个线程对应CMDServer,一个接受命令一个用来发送数据,估计这个地方会涉及到同步的问题,同步的方法很多,什么临界区,事件对象啊都可以,这里就不说了。
    第三个线程用来接受DATAServer发送过来的数据,这个应该和前面两个线程没有什么关系,应该不需要同步。这里你循环recv接收数据就可以,先接收数据字节数,然后接收后续的数据即可。
      

  2.   

    总的想法没什么问题, 但有几个小地方需要注意:
    1. 在while(TRUE)的循环中加Sleep(1),释放CPU的控制权
    2. 将缓冲区改为BYTE类型, 相应的指针也改为BYTE*类型
    3. 要处理通讯过程中的断开情况
      

  3.   

    1,Sleep一会
    2,大量数据的话,可以考虑用多线程传输数据,每个线程传输一段,然后客户端再整合数据,这样传输的会快些。