Я пытаюсь записать приемник и передатчик UDP на C, используя API сокетов для отправки видео с одного компьютера и воспроизведения его на другом с помощью VLC.
Я хочу открыть потоковое соединение насторона отправителя на VLC и получать эти данные с помощью сокетов. После этого я хочу заполнить общий буфер этими данными, чтобы их можно было прочитать на стороне получателя. Впоследствии эти данные могут быть отправлены в VLC для воспроизведения на стороне получателя, снова открыв сокет. Я написал некоторый код передатчика UDP.
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <stdint.h>
int fd, n, i;
uint8_t shared_buffer[1600];
if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
LOG_E(UDP_, "Failed to create socket on PDSCH server side\n");
return 1;
}
struct sockaddr_in pdsch_server_addr;
memset(&pdsch_server_addr, 0, sizeof(pdsch_client_addr));
pdsch_server_addr.sin_family = AF_INET;
pdsch_server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
pdsch_server_addr.sin_port = htons(1234);
if (bind(fd, (struct sockaddr *)&pdsch_server_addr, sizeof(pdsch_server_addr)) < 0) {
LOG_E(UDP_, "Failed to bind to socket descriptor %d", fd);
return 1;
}
unsigned char temp_buffer[1600];
int buf_len = 1500;
n = recvfrom(fd, temp_buffer, buf_len, MSG_WAITALL, (struct sockaddr *)&pdsch_server_addr, sizeof(pdsch_server_addr));
printf("First 10 bytes received are: ");
for (i = 0; i < 10; i++)
printf("%x ", temp_buffer[i]);
printf("\n");
temp_buffer[n] = '\0';
for(i = 0; i < 1500; i++) {
shared_buffer[i] = temp_buffer[i];
}
Это жизнеспособный способ отправки видеоданных с использованием сокетов и общего буфера между отправителем и получателем? Любая помощь будет оценена.