Собрался написать клиент-серверный софт на шарпе, но не могу никак понять как он работает.
Есть TcpClient(будет клиент) и TcpListener(будет сервер), и я застрал на получении данных
public class Operator {
private ClientInfo _clientInfo;
private IPEndPoint _peerEndPoint;
private WaveInEvent _waveIn;
TcpClient _tcpClient;
NetworkStream _stream;
public Operator(IPEndPoint end)
{
_clientInfo = new ClientInfo()
{
Type = ClientType.Operator,
Location = "Reseption"
};
_peerEndPoint = end;
}
public void Start()
{
_waveIn = new WaveInEvent();
_waveIn.DeviceNumber = 0;
_waveIn.WaveFormat = new WaveFormat(44100, 2); // формат звука (частота дискретизации и количество каналов)
_tcpClient = new TcpClient(_peerEndPoint);
_stream = _tcpClient.GetStream();
Authentication();
Thread.Sleep(3000);
_waveIn.DataAvailable += SendAudio;
_waveIn.StartRecording();
Console.WriteLine("Recording... Press Enter to stop");
Console.ReadLine();
_waveIn.StopRecording();
}
public void SendAudio(object sender, WaveInEventArgs e)
{
byte[] buffer = new byte[e.BytesRecorded];
Array.Copy(e.Buffer, buffer, e.BytesRecorded);
AudioData data = new AudioData()
{
Type = DataType.AudioData,
Sender = _clientInfo,
Audio = buffer,
IsAll = true
};
string json = JsonConvert.SerializeObject(data);
byte[] jsonData = Encoding.UTF8.GetBytes(json);
_stream.Write(jsonData, 0, jsonData.Length);
}
private void Authentication()
{
ExcellentData data = new ExcellentData()
{
Type = DataType.AuthData,
Sender = _clientInfo
};
string json = JsonConvert.SerializeObject(data);
byte[] jsonData = Encoding.UTF8.GetBytes(json);
_stream.Write(jsonData, 0, jsonData.Length);
}
}
Этой мой клиент, вот он отправляет json данные на сервер, а сервер в свою очередь читает потом эти данные из стрима.
Так вот когда к серверу подключается клиент и на сервере получаем стрим
NetworkStream stream = client.GetStream();
byte[] buffer = new byte[1024];
нужно указать размер буфера, но мои данные всегда будут разного размера, и я не могу понять как получая данные полностью прочитать весь json и обработать его