我的传输方法是这样的:
  1. Server --> Client    Option, FilesNumber...
  2. Client --> Server    OK, Let's go !
  3. Server --> Client    File_1_Head -> FileName
                                      -> FileSize
                                      -> FileDate
                                      -> CRC32
                                      -> .....
  4. Client --> Server    根据选项决定该文件是否传输
                          Send File_1_OK or File_1_NO;
                          Finish = False
  5. Server --> Client    if File_1_OK  SendFile_1_Pack_1_
  6. Client               if Finish
                              OKToTerFile = False
                          else
                              UnPackFile_1_Pack_1_
  7. Server               if All_Finish Exit;
                          if File_1_Finish
                                 goto 3
                          else
                                 goto 5原理仔细看其实很简单,就是一来一往的对话。
但现在出现这样的问题,客户端代码里面明明是先解压缩再保存,然后再发送继续的指令,服务器出到继续指令时才会发后面的文件流,可实际运行却是还未保存就已经发送了继续的指令…… 最终造成了以上方式的结果是:服务器传文件一两秒就结束了,而客户端却才接收到一半,然后就停在那儿了。我的QQ是 13888835  MSN [email protected]
谢谢各位!能解决者,分不是问题。

解决方案 »

  1.   

    如果是用Tcp 傳輸的話, 本不應該再做那麼多同步的工作,  Tcp 本來就保證可靠傳輸啊!
      

  2.   

    >如果是用Tcp 傳輸的話, 本不應該再做那麼多同步的工作,  Tcp 本來就保證可靠傳輸啊!那请问该如何做?难道只是一味地去传输数据而不管对方反应如何?
    那这样的话我如何处理中断操作?文件又该如何传?
    (我试过了,只一味地去传输的话,也是一样,服务器传完了,客户端才收到一半还不到)另外,我的服务器与客户端用的都是线程阻塞模式。
      

  3.   

    同意AIIRII.一次交互就够了.
    类似HTTP文件下传.-----------------------
    你那种方式错误应该是出在具体代码上.
    一般来说,发送的时候,你应该判断一下SOCKET函数返回值,确定是否发送到对端.
      

  4.   

    此种方式极类似 ftp 的传输方式。
    ftp 需要 20, 21 两个 port。一个端口是传输命令的,一个端口是传输数据的。