Принять данные с 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);
}
}