Принять данные с IP-камеры по UDP - C#
Формулировка задачи:
Приветствую!
Есть ip камера работающая по UDP, она получая определенную команду начинает в бинарном виде валить данные. Написал такой код:
Команда приходит успешно, и камера начинает отвечать ( смотрю с помощью wireshark )
Читать пытаюсь вот таким образом, в отдельном потоке:
Но не приходит никаких данных!
Самое интересное, когда я с помощью другой программы пишу на этот порт по ip 127.0.0.1 - данные отображаются, подскажите , что я не правильно делаю?
public void getJpg() { ipcam_command_t camcmd = new ipcam_command_t(); //Инициализируем массив camcmd.param = new int[15]; ipcam_packet_t buffer = new ipcam_packet_t(); buffer.reserved = new int[3]; buffer.data = new byte[CAPTURE_BUFFER_SIZE]; camcmd.cmd = IPCAM_CMD_START; // Формируем команду camcmd.flags = 0; // Создаем UdpClient UdpClient sender = new UdpClient(); // Создаем endPoint по информации об удаленном хосте IPEndPoint endPoint = new IPEndPoint(remoteIPAddress, Port); try { // Отправляем данные полученные как массив байт byte[] bytes = camcmd.GetBytes(); sender.Send(bytes, bytes.Length, endPoint); } catch (Exception ex) { Console.WriteLine("Возникло исключение: " + ex.ToString() + "\n " + ex.Message); } finally { // закрыть соединение sender.Close(); } }
public static void Receiver() { // Создаем UdpClient для чтения входящих данных UdpClient receivingUdpClient = new UdpClient(Port); IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Parse("192.168.2.55"), Port); //IPEndPoint RemoteIpEndPoint = null; //receivingUdpClient.Connect(IPAddress.Parse("192.168.2.55"), Port); try { while (true) { // Ожидание дейтаграммы byte[] receiveBytes = receivingUdpClient.Receive( ref RemoteIpEndPoint ); // Преобразуем и отображаем данные string returnData = Encoding.UTF8.GetString(receiveBytes); Console.WriteLine(" --> " + returnData.ToString()); } } catch (Exception ex) { Console.WriteLine("Возникло исключение: " + ex.ToString() + "\n " + ex.Message); } }
Решение задачи: «Принять данные с IP-камеры по UDP»
textual
Листинг программы
public void Start() { try { // Создаем UdpClient sender = new UdpClient(); // Создаем endPoint по информации об удаленном хосте endPoint = new IPEndPoint(remoteIPAddress, Port); } catch (Exception e) { MessageBox.Show(e.Message); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д