WebClient:用DownloadFile和用OpenRead的结果怎么不同?顺请荐书:)

forestwind 2005-08-21 01:00:51
多谢!代码如下:
System.Net.WebClient client = new System.Net.WebClient();
client.Headers.Add ("user-agent", "WinampMPEG/2.7");
client.DownloadFile("http://localhost/m3uplay/tomp3.asp?SongID=148040","d:\\c.mp3");
这样得到的结果是一个5.01Mb的文件。
如果这样:
System.IO.Stream str = client.OpenRead("http://localhost/m3uplay/tomp3.asp?SongID=148040");
System.IO.FileStream fs = new FileStream("d:\\this.mp3",System.IO.FileMode.Create,System.IO.FileAccess.Write,System.IO.FileShare.Read);
byte[] buffer = new byte[1024];
int count;
int ps=0;
for(;;)
{
count=str.Read(buffer,0,1024);
ps+=count;
fs.Write(buffer,0,1024);
down=((float)ps)/(2048*1024);
fs.Flush();
if(count==0)break;
}
fs.Close();
str.Close();
这样得到的就是一个6M的文件,而且mp3播放起来很刺耳。
这是怎么回事?我要怎样能得到正确的结果呢?
btw:我最近总是觉得我在网络方面基础很差,可否推荐一些书来读?
...全文
205 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
forestwind 2005-08-24
  • 打赏
  • 举报
回复
谢谢大家!
zeusvenus 2005-08-21
  • 打赏
  • 举报
回复
如果要底层的,那太多了,楼主去几乎任何一个电子书下载的网站翻翻都是一大堆的。
zeusvenus 2005-08-21
  • 打赏
  • 举报
回复
如果用流媒体格式,可能效果会好一些。
推荐看看《C#网络编程》
fanruinet 2005-08-21
  • 打赏
  • 举报
回复
Professional .NET Network Programming
C# Network Programming by Richard Blum
TechEye 2005-08-21
  • 打赏
  • 举报
回复
不一定要.Net下的,可以找一本书叫 Unix网络通讯的书
forestwind 2005-08-21
  • 打赏
  • 举报
回复
MSDN固然不错,可又没有讲网络系统一点的?我很多基本概念还不行呢。我想知道些底层的,不一定要.NET下的。
TechEye 2005-08-21
  • 打赏
  • 举报
回复
来晚了,原来楼主自己解决了。没错啊

count=str.Read(buffer,0,1024); 最后count不一定返回1024.

楼主想看什么书啊??MSDN是最好的书啊!!
forestwind 2005-08-21
  • 打赏
  • 举报
回复
101分呀
forestwind 2005-08-21
  • 打赏
  • 举报
回复
问题解决!我好笨啊
fs.Write(buffer,0,count);这样才对。
那这个帖子怎么办?分就分给荐书者了呀
zhaoliang_chen 2005-08-21
  • 打赏
  • 举报
回复
up
using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; using System.Collections; using System.IO; using System.Text.RegularExpressions; using RE = System.Text.RegularExpressions.Regex; using System.Security.Cryptography.X509Certificates; /*************************************************************************************************************************************************** * *文件名:HttpProc.cs * *创建人:HeDaode * *日 期:2007.09.01 * *描 述:实现HTTP协议中的GET、POST请求 * *使 用:HttpProc.WebClient client = new HttpProc.WebClient(); client.Encoding = System.Text.Encoding.Default;//默认编码方式,根据需要设置其他类型 client.OpenRead("http://www.baidu.com");//普通get请求 MessageBox.Show(client.RespHtml);//获取返回的网页源代码 client.DownloadFile("http://www.codepub.com/upload/163album.rar",@"C:\163album.rar");//下载文件 client.OpenRead("http://passport.baidu.com/?login","username=zhangsan&password=123456");//提交表单,此处是登录百度的示例 client.UploadFile("http://hiup.baidu.com/zhangsan/upload", @"file1=D:\1.mp3");//上传文件 client.UploadFile("http://hiup.baidu.com/zhangsan/upload", "folder=myfolder&size=4003550",@"file1=D:\1.mp3");//提交含文本域和文件域的表单 *****************************************************************************************************************************************************/ namespace HttpProc { /// ///上传事件委托 /// /// /// public delegate void WebClientUploadEvent(object sender, HttpProc.UploadEventArgs e); /// ///下载事件委托 /// /// /// public delegate void WebClientDownloadEvent(object sender, HttpProc.DownloadEventArgs e); /// ///上传事件参数 /// public struct UploadEventArgs { /// ///上传数据总大小 ///

110,529

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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