(高分) 什么样的方式才是最好的文件传输方式?

xiaoxiaobai 2003-11-12 08:59:04

我的传输方法是这样的:
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 Lorndragon@163.com
谢谢各位!能解决者,分不是问题。
...全文
100 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxiaobai 2003-11-13
  • 打赏
  • 举报
回复
呵呵~~~~~~~ 谢谢各位,我已经解决了!
delphi1234567 2003-11-12
  • 打赏
  • 举报
回复
此种方式极类似 ftp 的传输方式。


ftp 需要 20, 21 两个 port。

一个端口是传输命令的,一个端口是传输数据的。
halfdream 2003-11-12
  • 打赏
  • 举报
回复
同意AIIRII.

一次交互就够了.
类似HTTP文件下传.

-----------------------
你那种方式错误应该是出在具体代码上.
一般来说,发送的时候,你应该判断一下SOCKET函数返回值,确定是否发送到对端.


halfdream 2003-11-12
  • 打赏
  • 举报
回复
xiaoxiaobai 2003-11-12
  • 打赏
  • 举报
回复
>如果是用Tcp 傳輸的話, 本不應該再做那麼多同步的工作, Tcp 本來就保證可靠傳輸啊!

那请问该如何做?难道只是一味地去传输数据而不管对方反应如何?
那这样的话我如何处理中断操作?文件又该如何传?
(我试过了,只一味地去传输的话,也是一样,服务器传完了,客户端才收到一半还不到)

另外,我的服务器与客户端用的都是线程阻塞模式。
pandengzhe 2003-11-12
  • 打赏
  • 举报
回复
up
aiirii 2003-11-12
  • 打赏
  • 举报
回复
如果是用Tcp 傳輸的話, 本不應該再做那麼多同步的工作, Tcp 本來就保證可靠傳輸啊!
xsFeng 2003-11-12
  • 打赏
  • 举报
回复
“还未保存就已经发送了继续的指令”

改改代码不行末?
XXSingle 2003-11-12
  • 打赏
  • 举报
回复
是客户端
XXSingle 2003-11-12
  • 打赏
  • 举报
回复
帮你顶~~~~~!
=======================
你可以把服务器端的反应速度调慢一下

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧