想用Socket传输wav文件,但是转换成netStream的时候说文件头已经被破坏~~
高手给一段转换的代码吧~~其实意思就很简单,就是把wav文件准确的转换成二进制文件.
高手给一段转换的代码吧~~其实意思就很简单,就是把wav文件准确的转换成二进制文件.
解决方案 »
- 怎样给EntityFramework的导航传值
- 借人气,新人求问表间关系~~望海涵~~
- 新手提问:如何删除掉字符串的最后一个字符
- 网站部属在公网上面,我的电脑通过路由器上网,网站获取不到我的MAC
- 急求解答(右键问题)
- [求助]如何让Visual Studio 2005 支持多显示器
- C#问题
- C# Socket客户端 TCP/IP协议 像我的需求适合同步还是异步?希望前辈指教
- VS C# 2010 chart控件问题
- listbox中某些内容太长,listbox宽度不够的时候,如何显示一个小黄条,来显示这一行的内容?
- 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();