ฉันกำลังทำงานร่วมกับ NAudio เพื่อส่งไฟล์เสียง .wav จากพีซีเครื่องหนึ่งไปยังอีกเครื่องหนึ่ง
ฉันได้ลองส่งข้อความผ่านสตรีมเครือข่ายแล้ว แต่ไม่สามารถตรวจสอบได้ว่าข้อความนั้นถูกส่งอย่างถูกต้องหรือไม่ เพราะจนถึงตอนนี้ฉันประสบปัญหาในการรับรหัส
นี่คือรหัสการส่ง
public void StartConnection()
{
_connection = new TcpClient("localhost",1111);
_stream = _connection.GetStream();
SendFile(_stream,_waveStream);
}
public void SendFile(NetworkStream StreamToWrite,WaveStream StreamToSend)
{
WaveFileWriter write = new WaveFileWriter(StreamToWrite,StreamToSend.WaveFormat);
byte[] decoded = FromStreamToByte(StreamToSend);
write.Write(decoded,0,decoded.Length);
write.Flush();
}
และนี่คือรหัสรับ
public void ListenConnection()
{
_listener = new TcpListener(IPAddress.Any,1111);
_listener.Start();
TcpClient receiver = _listener.AcceptTcpClient();
_stream = receiver.GetStream();
}
public void ReadFile(NetworkStream stream)
{
WaveFileReader read = new WaveFileReader(stream);
}
ตอนนี้ฉันประสบปัญหาในการรับรหัสต่อจากที่ใด เพราะถ้าฉันเรียกใช้เมธอด read
ของ read
มันจะถามถึงอาร์เรย์ไบต์ ออฟเซ็ต และความยาว แต่ทำไมมันถึงขออาร์เรย์นั้นอยู่นอกเหนือฉันเพราะมันเพิ่งได้รับข้อมูลทั้งหมด
คำแนะนำใด ๆ ว่าฉันควรดำเนินการต่อไปด้วยวิธี ReadFile
อย่างไร
อัปเดต---
ในระหว่างการดีบัก ฉันพบว่า NetworkStream ที่ถูกส่งผ่านไปยัง SendFile เพื่อใช้ใน WaveFileWriter ไม่ได้กำหนดความยาว ดังนั้นจึงให้ Stream Does not Support Seek Operations
อย่างไรก็ตาม ฉันไม่เข้าใจว่าทำไมมันถึงแสดงข้อผิดพลาดนี้ เนื่องจากต้นแบบบอกว่าสามารถยอมรับสตรีมใดๆ ได้