关于socket传输文件的问题

yq278897078 2012-08-20 09:53:50
试图用csocket进行文件传输 传输纯文本文件没有问题 但如果是其他文件(比如图片文件)跟踪后发现打开文件到缓冲区的时候出现了问题


CFile file;
file.Open("文件路径名",CFile::modeRead|CFile::shareDenyWrite);
byte *buffer=NULL;
long count=file.GetLength();
file.Read(buffer,count);


执行这些语句后发现直到读取数据之前都没有问题 但是读取数据后buffer并没有把文件中的数据全部读取而是只读取了4个字节
不是很清楚是什么原因导致的 希望大家能够帮忙看一下 谢谢!..
...全文
160 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yq278897078 2012-08-21
  • 打赏
  • 举报
回复
拜托了解的朋友帮帮忙.....><............... 另外加一句 CFile::Open的返回值和count是一样大的......
yq278897078 2012-08-21
  • 打赏
  • 举报
回复
#6楼 我开空间了忘了贴上来 2楼的位置我已经补充上了
yq278897078 2012-08-21
  • 打赏
  • 举报
回复


FILE * pFile;
long lSize;
byte* buffer;
pFile = fopen ( "路径" , "rb");
fseek (pFile , 0 , SEEK_END);
lSize = ftell (pFile);
rewind (pFile);
buffer= new byte[lSize];
fread (buffer,1,lSize,pFile);

用这种方式还是一样的, 读取出来的数据不对....><...还是说word,mp3,jpg之类的格式不可以用这种方式打开并传送?
傻X 2012-08-21
  • 打赏
  • 举报
回复
byte *buffer=NULL;
拜托开个空间好么?
根据
long count=file.GetLength();

count的长度开个空间,不开空间你怎么存啊?
yq278897078 2012-08-21
  • 打赏
  • 举报
回复
O.O.....这个我觉得我知道啊.........可是不太明白为什么我指定长度了读出来的数据还是不对......
youngwolf 2012-08-21
  • 打赏
  • 举报
回复
网络编程中,你不要把数据当成c字符串来看,虽然它的函数的签名是字符串,那是假象。
所以任何时间,都要带个长度。
yq278897078 2012-08-20
  • 打赏
  • 举报
回复
抱歉我没贴上来...


CFile file;
file.Open("文件路径名",CFile::modeRead|CFile::shareDenyWrite);
byte *buffer=NULL;
long count=file.GetLength();
buffer= new byte[count];
file.Read(buffer,count);



我发现刚读取出来图片文件的buffer直接创建一个新的文件 只剩下64字节 传送完后只剩下4字节.......纯文本形式的文件不会有问题.......
hurryboylqs 2012-08-20
  • 打赏
  • 举报
回复
能读出4字节已经很不错了,buffer申请空间了吗

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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