想用Socket传输wav文件,但是转换成netStream的时候说文件头已经被破坏~~
高手给一段转换的代码吧~~其实意思就很简单,就是把wav文件准确的转换成二进制文件.
高手给一段转换的代码吧~~其实意思就很简单,就是把wav文件准确的转换成二进制文件.
解决方案 »
- 求C#项目开发全程实录的源代码
- 关于资源文件调用的问题,大家来围观啊!*************************************************************
- 关于GridView格式化日期问题!!!。。。。。。。。。。。。。。。。。。
- DotNet调用Dll之前如何判断该dll是托管或非托管
- using System 为什么一用它就出错???
- DataGridview 设置列标题,添加删除列效率问题。
- 控件的AccessibleDescription到底有什么作用?没看出来
- 求助一个sql server 删除重复语句
- 奉送:google搜索webservice调用完整源代码,自己做搜索突破cache封锁!!!
- 属性和构造函数的区别????
- setWindowsHookEx 参数
- 求助,页面刷新,保持控件不刷新的问题
byte[] content=new byte[fs.Length];
fs.Read(content, 0,content.Length);
fs.Close();
然后把此byte[] content发送出去就是了!
我写了一段这样的事例代码:
FileStream fs = File.OpenRead("E:\\SoundTest.wav");
Byte[] send = new byte[1024];
fs.Read(send, 0, send.Length);
SoundPlayer sp = new SoundPlayer();
sp.Stream = (Stream)fs;
sp.Play();
这样的话会报上面的错,但是把fs.Read(send, 0, send.Length)这一句去掉,就运行正常了~
是不是wav有些特殊的格式呀?
这样的转换在播放的时候会报错:"波形头已经破坏"
我写了一段这样的事例代码:
FileStream fs = File.OpenRead("E:\\SoundTest.wav");
Byte[] send = new byte[1024];
fs.Read(send, 0, send.Length);
SoundPlayer sp = new SoundPlayer();
sp.Stream = (Stream)fs;
sp.Play();
这样的话会报上面的错,但是把fs.Read(send, 0, send.Length)这一句去掉,就运行正常了~
是不是wav有些特殊的格式呀?
--------------------------
因为你sp的参数是文件流,你fs.Read就改变了数据流,数据流的内容都跑到send里去了,你再播放此流当然是空的了!
wav用socket一样传送,没有区别!
NetworkStream netstream = new NetworkStream(accsock);
netstream.Write(sendbyte, 0, sendbyte.Length);的传吗?我昨天试过,还是不好使的~
int length=0;
while(sendbyte.Length-length>=10240)
{
socket.Send(sendbyte,length,10240,SocketFlags.None);
length+=10240;
}
socket.Send(sendbyte,length,sendbyte.Length-length,SocketFlags.None);
给你部分代码
FileStream fw=new FileStream(("E:\\SoundTest.wav");,FileMode.OpenOrCreate,FileAccess.ReadWrite);
while(Alllength>0) //Alllength是此Wav文件总长度
{
int i=socket.Receive(content,0);
fw.Write(content,0,i);
Alllength-=i;
}
fw.Flush();
fw.Close();
sp.Stream = (Stream)fw;
sp.Play();我基本已经给你把代码写完了!
可用StreamReader,StreamWriter传递简单命令,包括比如你要传的文件长度等
NetworkStream ns=new NetworkStream(socket);
StreamReader reader=new StreamReader(ns);
StreamWriter writer=new StreamWriter(ns);
嘿嘿,楼主免费用工!
sp.Stream = (Stream)fw;
sp.Play();
fw.Close();