在发送文件的信息之前,最好先发送文件的长度。接受方得到数据后先展开文件长度,然后的操作就只需要做个循环,读取一定长度的缓冲区后写入文件就可以了。TCP协议对包的大小没有限制的,有限制的是ip,但那属于底层协议所管的。你只要交给tcp那么多的数据,它肯定会帮你全部传输的。不用你去关心她是怎么打包发送的,除非你使用UDP.使用Sendstream时需要注意stream不要你自己去显式删除,由于tcp的发送使用异步方式,因此你不能认为该函数返回就已经是整个数据都发送过去了。sendstream会负责适当的清楚工作的,很可能不是由它完成的,而是由进程关闭时而作的清场工作。
解决方案 »
- Delphi 7 开启COMM问题,
- 用TTS5.1朗读问题
- 在delphi里如何调用ie去访问一个网址?
- 如何获得本机IP地址!!急!!最好有代码!!
- DELPHI中怎么设置才能让编译后的EXE文件可以那到其他没有D的机子里运行?
- 各位高手,能否把你们的email 或者QQ告诉小弟,以便小弟请教一些很菜的问题,提供者都有分,我的QQ:24324773,Email:[email protected],谢谢!
- 毛病!
- 请教
- 如何不区分大小写比较两个字符串?
- 如何实现?????(这个问题因该有一点难度吧)
- dxdbgrid中的check
- Borland Delphi6和Jbuilder5技术研讨会。成都
这个问题呢?能解释一下吗?
按你的意思,用 sendbuf 方法来传输文件的话,是不是不用理文件的长度?因为“你只要交给tcp那么多的数据,它肯定会帮你全部传输的。不用你去关心她是怎么打包发送的,”对不对?
Len:=Socket.ReceiveLength;
Temp:=Socket.ReceiveText;
filem.Write(PChar(Temp)^,len);
FILEM为文件流,
这样接受,我在INTERNET上用阻塞模式,发4M左右得文件都没有问题
要具体得代码,QQ联系,15056091