1、最近需要在linux下基于udp写一个应用程序,实现接收vlc播放器发送的视频流,并将接收到的视频流转发到另一个vlc客户端播放。并将这个应用程序交叉编译到ARM上执行测试通过。主机端ip地址:192.168.1.100,ubuntu虚拟机ip地址:192.168.1.200。

2、udp.c应用程序代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<sys/wait.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include <arpa/inet.h>
#include<netdb.h>

#define PORT 7773   
#define DEST_PORT 59000
#define MAXDATASIZE 1500

int main(int argc,char *argv[])
{
    int socket_fd, socket_fd_send;
    struct sockaddr_in my_addr,user_addr;
    char buf[MAXDATASIZE];
    int so_broadcast=1;
    socklen_t size;
    char my_ip[12];
    int i = 0;
    int count = 0;
    int host_port;
    int val = 1;
    my_addr.sin_family=AF_INET;
    my_addr.sin_port=htons(PORT);
    my_addr.sin_addr.s_addr=inet_addr("255.255.255.255");
    bzero(&(my_addr.sin_zero),8);

user_addr.sin_family=AF_INET;
    user_addr.sin_port=htons(PORT);
    user_addr.sin_addr.s_addr=htonl(INADDR_ANY);
    bzero(&(user_addr.sin_zero),8);
    if((socket_fd=(socket(AF_INET,SOCK_DGRAM,0)))==-1) {
        perror("socket");
        exit(1);
    }
    setsockopt(socket_fd,SOL_SOCKET,SO_BROADCAST,&so_broadcast,sizeof(so_broadcast));
    setsockopt(socket_fd, IPPROTO_IP, IP_RECVERR , &val,sizeof(int));

if((bind(socket_fd,(struct sockaddr *)&user_addr,
                        sizeof(struct sockaddr)))==-1) {
        perror("bind");
        exit(1);
    }

strcpy(buf,"Hello,I'm on line!");
    sendto(socket_fd,buf,strlen(buf),0,(struct sockaddr *)&my_addr,sizeof(my_addr));
    size=sizeof(user_addr);
    recvfrom(socket_fd,buf,MAXDATASIZE,0,(struct sockaddr *)&user_addr,&size);
    printf("my_addr.sin_port = %d\n",ntohs(my_addr.sin_port));
    strcpy(my_ip,inet_ntoa(user_addr.sin_addr));
    printf("my_ip:%s\n",inet_ntoa(user_addr.sin_addr));
    while(1) {
        bzero(buf, sizeof(buf));
        size=sizeof(user_addr);
        count = recvfrom(socket_fd,buf,MAXDATASIZE,0,(struct sockaddr *)&user_addr,&size);
        user_addr.sin_port=htons(DEST_PORT);
        sendto(socket_fd, buf, count, 0, (struct sockaddr *)&user_addr, sizeof(user_addr));
    }
    return 0;
}

3、ubuntu下编译udp.c。

gcc -o udp udp.c

./udp运行。

4、主机端打开一个vlc播放器,选择"媒体"-->"流"。

5、点击"添加"来选择需要发送的视频流文件,再点击"串流"。

点击下一个。

6、点击"添加",并填写ip地址和端口号。

7、点击"下一个"。

8、再点击"下一个"。

9、点击"流",完成视频的发送。

10、再打开一个vlc播放器,选择"媒体"-->"打开网络串流",并在菜单中输入"udp://@192.168.1.100:59000"。

11、点击"播放"。

12、将udp.c交叉编译到ARM上。

../arm-linux-gcc -o udp udp.c

13、只需将ubuntu虚拟机的ip地址改成ARM开发板的ip地址,并按照上述流程执行。

linux下和嵌入式linux下通过udp接收来自vlc播放器的视频并转发播放相关推荐

  1. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之按键驱动框架

    文章目录 前言 1.APP怎么读取按键值 1.1.查询方式 1.2.休眠-唤醒方式 1.3.poll方式 1.3.异步通知方式 1.5. 驱动程序提供能力,不提供策略 2.按键驱动程序框架--查询方式 ...

  2. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之设备树模型

    文章目录 前言 1.设备树的作用 2.设备树的语法 2.1.设备树的逻辑图和dts文件.dtb文件 2.1.1.1Devicetree格式 1DTS文件的格式 node的格式 properties的格 ...

  3. 嵌入式系统、linux和嵌入式linux的区别

    这几个东西比较容易混淆 嵌入式系统: IEEE(国际电气和电子工程师协会)对嵌入式系统的定义:"用于控制.监视或者辅助操作机器和设备的装置".原文为:Devices Used to ...

  4. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之驱动设计的思想:面向对象/分层/分离

    文章目录 前言 1.分离设计 驱动程序分析---程序分层 通用驱动程序---面向对象 个性化驱动程序---分离 APP 程序分析 前言 韦东山嵌入式Linux驱动开发基础知识学习笔记 文章中大多内容来 ...

  5. 基于嵌入式linux电子相册设计,用于LINUX或者嵌入式LINUX的电子相册程序,基于QT开发...

    用于LINUX或者嵌入式LINUX的电子相册程序,基于QT开发,包含源代码和编译好的可执行程序 linux_project\album\album.pro .............\.....\al ...

  6. 播放器设计 要求:实现播放、循环播放、暂停、快进、下一首、打开选择功能

    <软件开发工具>实验 一.实验内容 实验1:写字板设计      要求:实现字体颜色.大小更改:实现查找.替换功能 例图如下: 实验2:画图工具设计      要求:实现画笔粗细.颜色选择 ...

  7. linux 无线传输,嵌入式Linux下图像存储与无线传输技术研究

    摘要: 随着嵌入式系统和无线通信技术的迅速发展,以嵌入式操作系统为平台,构建文件系统实时存储数据并依赖于无线网络传输数据的技术得到越来越广泛的应用,尤其是应用于远程无线监控系统中的视频图像业务的实时存 ...

  8. 嵌入式linux中断驱动,嵌入式Linux下硬件中断驱动程序的开发.pdf

    嵌入式Linux下硬件中断驱动程序的开发.pdf 2003 年 6 月 航空精密制造技术 Jun. 2003 第 39 卷 第 3 期 AVIATION PRECISION MANUFACTURING ...

  9. Qt编写物联网管理平台(支持win/linux/mac/嵌入式linux/modbus等)

    一.前言 这个物联网综合管理平台前后迭代了五年,一点一滴慢慢积累起来,从最开始的只有modbus串口协议解析以及简单的表格显示数据,慢慢的逐渐增加了tcp_rtu支持,用户管理模块,地图监控模块,而后 ...

最新文章

  1. 四人过桥问题c语言编程,SQL趣题:四人过桥的问题
  2. 基于visual Studio2013解决C语言竞赛题之1027 YN
  3. 基于 abp vNext 和 .NET Core 开发博客项目 - 集成Hangfire实现定时任务处理
  4. python后端技术栈_Python后端技术栈(三)--设计模式
  5. Java equals()和hashCode()
  6. mysql 位操作支持
  7. php生成不重复时间戳,PHP获取时间戳和微秒数以及生成唯一ID
  8. mac启动mysql,apache,php
  9. ConcurrentHashMap1.7和1.8的源码分析比较
  10. maven 整体打包_Maven打包方式整理
  11. 按下组合键 可以迅速锁定计算机,Win7锁定计算机快捷键是什么?Win7使用锁定计算机快捷键的方法...
  12. Javascript:结合canvas、a标签根据url下载图片到本地
  13. WPF扫雷游戏(简略版)
  14. Kettle 添加备注
  15. 案例丨长江今年1号洪水平稳通过 金仓助力三峡工程防洪保电
  16. 数据中台到底是什么?
  17. Windows下pig-0.17启动时遇到的问题及解决
  18. 微信公众平台开发(110) 微信连Wi-Fi
  19. 1-11摇号机java_11选5在线模拟摇号
  20. 大众185A车机屏有关资料

热门文章

  1. 一场夜雨的误会?^_^
  2. 灵遁者:突破思维局限去思考时间和维度
  3. ubuntu20.04如何安装搜狗输入法
  4. Ray----Tune(2):Tune的用户指南
  5. project子项目之间任务关联_任务关联的类型(Project)
  6. Codeforces 432C (哥德巴赫猜想的巧妙应用)
  7. ARP防御篇-如何揪出“内鬼”并“优雅的还手”
  8. “第二盖茨”——马克·扎克伯格
  9. java单机版软件源码_Java五子棋单机版源码分享
  10. 特斯拉第二季度交付9.52万辆电动汽车创纪录 股价盘后上涨7%