# Re: how to use winsock send file

Posted by yeong huann on May 14, 1999 at 02:25:37:

In Reply to: Re: how to use winsock send file posted by guo on May 13, 1999 at 18:00:41:

其实也不困难
相信你已经看过我之前提出的问题,里面我有提到如何编码,解码.(如果没看过,那回头找找吧)
接下来我再说明如何传送档案
首先我们设定每个封包为516byte
第一步我们先传送档案名给接收端,(由于档案名称长度
不一,故利用我所说的方法编解码方法传送,当对方收到档
名时即开档,并随即传送一个要求对方续传封包的命令
EX:SC@@
当对方接到SC@@时会解读其命令,并随即传送封包
至于为什要传@字元,你可要回头查查之前的讨论
这时有一个重点要注意,那就是档案的切割
当我们开启档案时是不是可以知到档案的大小,这时我们
要作档案的切割,但怎样切呢?
我之前为什要将封包设为516BYTE?其实我是为了编码的考
量.
如果你看过我之前提出的方法,一定为认为这种方法会将
资料量扩大为两倍,而不想使用,但我真有这么呆吗?
其实我的做法是,先判读档案是否<=256BYTE,倘若是
则利用我设计的编解码方式传送,试想(256*2)+2个控制码
+2个@不就刚好等于516,但如果档案大小在>256<=512那就
分成两个封包拆解码传送
但如果档案大于512BYTE,怎么办?其实那就更容易
我们可将控制码设为4BYTE EX:ABCD,当对方收到ABCD.....,判读出第三个字元非@时,即可得知整个封包都
是资料,所以就从第5个字元开使读取资料,而不需得知结
束字元,因为结束字元就是封包的结尾(也不需要编解码)
就这样当对方收到一个封包就解读其控制码,并传送要求续传封包的命令,一直处理到最后一个封包再对它作拆解
码的动作(因为最后一个封包是不一定大小),然后就关档了
总而言之:你只要了解我所谓的控制码的意思,你就能做无
穷的变化
PS1:封包大小可你可随意设定
PS2:上述的方法也许非正统,但可运用在所有传输工具,如
有不合理之处请给予指导(但有些部份是为了使所有传输
工具都能使用而采用不得已的做法)

Follow Ups: