总共150!是否真的有人用TServerSocket,TClientSocket在局域网上成功传输过大文件吗?我问题很难吗?总是没人回答.(50分)

  • 主题发起人 主题发起人 yhhxj
  • 开始时间 开始时间
Y

yhhxj

Unregistered / Unconfirmed
GUEST, unregistred user!
想在局域网上传输较大的文件(几兆),参考了大富翁网站大哥小弟们的意见,在client端server端各设一个buf : array [1..2048]of char,在client端将文件拆开发送,在server端拼装,编完程序后一运行,果然一个字节不差的发了出去,而且一个字节不少(注意)的收到了,可是被传送的文件如果是exe文件则不能运行,是bmp,word文件则打不开,仔细跟踪程序,发现client端能将文件一字不差的读入buf,在ClientSocket1Read事件中用Socket.SendBuf(buf,sizeof(buf))发送,在server端ServerSocket1ClientRead事件中用Socket.ReceiveBuf(buf,sizeof(buf))接受,观察此时的buf,发现头八个byte被添加了八个字符,送过来的内容被全部向后移动了八个byte,最后八个byte的内容被挤了出来丢失,每次传输均是如此,如此下来,文件的大小不变,但是内容却变了,当然不能运行或打开,实在想不通前八个字符是从哪来的?哪位大虾给各说法?或给个完成这个功能的pas文件.这个问题搞的我这几天睡不着,刚才多回了一下车,话还没敲完100分就出去了,罢!罢!再加五十!贴地址不给分.
谢谢各位!

 
想在局域网上传输较大的文件(几兆),参考了大富翁网站大哥小弟们的意见,在client端server端各设一个buf : array [1..2048]of char,在client端将文件拆开发送,在server端拼装,编完程序后一运行,果然一个字节不差的发了出去,而且一个字节不少(注意)的收到了,可是被传送的文件如果是exe文件则不能运行,是bmp,word文件则打不开,仔细跟踪程序,发现client端能将文件一字不差的读入buf,在ClientSocket1Read事件中用Socket.SendBuf(buf,sizeof(buf))发送,在server端
ServerSocket1ClientRead事件中用Socket.ReceiveBuf(buf,sizeof(buf))接受,
观察此时的buf,发现头八个byte被添加了八个字符,送过来的内容被全部向后移动了
八个byte,且最后八个byte的内容被挤了出来丢失,每次传输均是如此,如此下来,文件
的大小不变,但是内容却变了,当然不能运行或打开,实在想不通前八个字符是从哪来
的?哪位大虾给各说法?或给个完成这个功能的pas文件.这个问题搞的我这几天睡不
着,刚才多回了一下车,话还没敲完100分就出去了,罢!罢!再加五十!谢谢各位!
 
这问题好象有点那个。。。那个。。。
呵呵
待我想一想呵
 
I Send You A Program,Wait
 
需要说明的是TServerSocket和TClientSocket在同一窗体内
 
在不在同一窗体有什么关系。我的邮箱大概有毛病,想给你发都发不出来。再试一试吧!
 
用UDP试试,曾用它传送过图像,不会被挤掉。
 
问题终于找到.
程序在Socket.ReceiveBuf前有一句Socket.ReceiveText;其用处是接收发送文件
的用户名和文件名,本来在接收文件的第一次后此句就不应该再执行,但考虑到可
能对程序没有影响,就没在意,可以肯定,buf的头多出的八个字符就是此句引起
的.不管怎样,谢谢大家!
 
呵呵,又长见识了。
 
给点分吧
 
到我的网站吧,我放了一个原程序上去,可以发几百M啊
http://lovejingtao.126.com
 
另外100分怎么给?
 
后退
顶部