私はNAudioを使用して、オーディオファイル.wavをあるPCから別のPCに正確に送信しています。
ネットワーク ストリーム経由でメッセージを送信しようとしましたが、コードの受信に問題があるため、メッセージが正しく送信されたかどうかを確認する方法がありません。
これが送信コードです。
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
。
アップデート - -
デバッグ中に、WaveFileWriter で使用するために SendFile に渡されていた NetworkStream の長さが決定されていないことがわかりましたStream Does not Support Seek Operations
。ただし、プロトタイプが任意のストリームを受け入れることができると言っているため、このエラーが発生する理由がわかりません。