У меня есть приложение для связи с IP-камерой.Это настроено для подключения по заранее определенному адресу.И TCP Listener работает по этому адресу и принимает соединение с камеры.Когда камера подключается, я посылаю команду на получение потока MJpeg с камеры, и камера начинает отправлять поток в ответ на команду.
Я использую асинхронный метод для чтения потока из сокета.Но через некоторое время мое приложение зависло при чтении данных из сетевого потока.
Я использую этот код для чтения данных из сетевого потока, и мне нужно написать несколько сообщений на экране, чтобы получить состояние подключения камеры.
private void ReadData()
{
try
{
string msg = "Reading Data... client connected " + _camClient.Connected.ToString() +
"... netStream Readable " +
_netStream.CanRead.ToString();
Console.WriteLine(msg);
_callback = new AsyncCallback(GetData);
_buffer = new byte[Buffersize];
_async = _netStream.BeginRead(_buffer, 0, Buffersize, _callback, null);
}
catch (Exception ex) { Console.WriteLine("ReadData: " + ex.Message); }
}
private void GetData(IAsyncResult result)
{
try
{
int read = _netStream.EndRead(result);
if (read > 0)
{
_data = new byte[read];
Array.Copy(_buffer, 0, _data, 0, read);
ProcessData();
}
ReadData();
}
catch (Exception ex) { Console.WriteLine("GetData: " + ex.Message); }
}