首先,我对这个话题很新,所以我在互联网上搜索了一些关于TCP和套接字连接的东西。我的智能手机上有一个应用程序,它充当服务器和WinForms应用程序,它是客户端。现在我在我的应用程序中尝试了这个:
s.SendFile(outputFile);
其中outputfile是mp3格式的音频文件,s是Socket。
在客户端,我有一个TCP连接:
using (var stream = client.TcpClnt.GetStream())
using (var output = File.Create(Path.Combine(Directory.GetCurrentDirectory(), "Audio.mp3")))
{
// read the file in chunks of 1KB
var buffer = new byte[1024];
int bytesRead;
while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, bytesRead);
}
}
最后我只收到23kb的音频文件,无法打开。我在这里做错了什么?
编辑:
我试过这个
Socket socket = TcpClnt.Client;
然后
while ((bytesRead = socket.Receive(buffer, 0, buffer.Length, SocketFlags.None)) > 0)
该文件仍然是23kb(也许这是可以的。我不知道)但文件总是已损坏且媒体播放器无法打开。
答案 0 :(得分:0)
将此选项用于音频文件:
Stream output = new StreamWriter(outputfilename,true)
Mp3FileReader reader = new Mp3FileReader(file);
Mp3Frame frame;
while ((frame = reader.ReadNextFrame()) != null)
{
output.Write(frame.RawData, 0, frame.RawData.Length);
}