Linux应用开发
文章平均质量分 55
dayL_W
热爱编程、热爱生活、热爱运动
展开
-
网络安全传输系统(7)-总结
突然发现这个项目还没有总结,现在补加一下1、实现功能1、用户可以创建或者登陆一个账号2、用户可以通过网络上传或者下载自己的文件3、通过SSL加密数据在网络中的传输4、使用线程池技术来优化这个系统2、使用技术1、socket编程2、文件编程3、GTK编程4、OpenSSL编程5、SQlite编程6、线程池技术3、碰到及解决的问题...原创 2017-09-25 19:53:07 · 761 阅读 · 2 评论 -
Linux-USB驱动(2)-USB协议分析
USB设备逻辑结构在USB设备的逻辑组织中,包含设备、配置、接口和端点4个层次。设备通常有一个或多个配置,配置通常有一个或多个接口,接口有零或多个端点。每个USB设备都可以包含一个或多个配置,不同的配置使设备表现出不同的功能组合,配置由多个接口组成。在USB协议中,接口代表一个基本的功能,一个功能复杂的USB设备可以具有多个接口,而接口是端点的汇集。比如说一个USB播放器带有...原创 2017-08-12 15:09:25 · 706 阅读 · 0 评论 -
Linux-视频监控系统(8)-项目小结
关键技术在这个项目中,涉及到的关键技术有这些:1、Epoll框架的设计与实现2、网络传输协议的定义与实现3、基于GTK的视频播放器设计4、网络传输协议在播放器中的移植下面我们将总结并回顾这几个关键技术Epoll框架的设计与实现Epoll是实现阻塞性IO和多路复用的一种技术,它能够同时监控许多文件是否可以读或者写,如果不能它将会进入阻塞,如果可以它将会唤醒...原创 2017-08-12 10:19:44 · 3316 阅读 · 0 评论 -
Linux-视频监控系统(7)-播放器子系统2
分析上一节我们完成了GTK图像框架的diamante编写,现在需要把网络子系统加入到这个框架中。再这个框架中我们需要添加2个功能,一个是建立和服务器的连接,另一个是显示当前的图像。这2个功能分别和2个窗口对于,在登录窗口实现和服务器的连接,在主窗口实现图像的显示。实现建立服务器的连接在connect_handler函数中通过调用tcp_init_net函数来实现,tcp_init...原创 2017-08-11 21:52:37 · 483 阅读 · 0 评论 -
Linux-视频监控系统(10)-对USB摄像头的YUV图片压缩成视频
需要把图片压缩成摄像头,需要一个工具,就是大名鼎鼎的ffmpeg。ffmpeg的功能实在在太强大了,源代码也比较复杂,同时需要掌握很多音视频压缩的相关知识,我也是初次接触ffmpeg,了解的东西还不是很多,如果需要进一步了解的同学可以参考[总结]FFMPEG视音频编解码零基础学习方法我在这里呢,总结一下我在开发过程中碰到的问题,以及贴出经过自己理解后的代码。问题总结首先是这...原创 2017-08-16 22:08:32 · 1594 阅读 · 0 评论 -
Linux-视频监控系统(6)-播放器子系统
播放器功能及设计思路播放子系统需要实现和服务器的连接,以及接收并显示图像等功能。主要的界面有2个,一个是连接界面,由用户输入IP地址和端口后连接服务器,另一个是播放界面,显示接收过来的图像,并且显示图像格式,帧率、大小等信息。根据这些要求我们开始设计播放子系统,播放子系统的界面采用GTK来编写。由于一次性难以实现全部功能,这里分为2部分来实现。第一步先把播放界面设计好,第二步在界面的基础上实现...原创 2017-08-07 21:46:55 · 901 阅读 · 0 评论 -
Linux-视频监控系统(5)-TCP传输子系统实现
传输子系统的协议打算采用TCP来完成,开发板充当服务器,PC机充当客户机。传输视频其实也就是传输一幅幅图片,因此接下来的任务就时在服务器和客户机之间传输图片。这里面又涉及到了传输协议,我们采用申请式的协议,客户机发送一个图片请求,服务器就传送一副图片,如果没有任何请求,服务器将什么也不做。1、协议设计为了把Epoll用起来我们定义2个事件,分别是对可以对socket读和写的事件。当s...原创 2017-07-16 22:09:38 · 1588 阅读 · 0 评论 -
网络安全传输系统(6)-其它改进
1、改进需要改进的地方如下:1、输入密码时最好不回显,用*代替2、目前数据库中保存的是明文密码,这显然是不行的,容易被窃取,可以保存密码对应的MD5摘要3、在服务器中为每个用户创建一个文件夹,用来保存其上传的文件4、用户选择下载文件时,最好能够列出其能够下载的所有文件改进后的代码在:https://github.com/dayL-W/File-Transfer-with-S...原创 2017-06-27 19:49:33 · 649 阅读 · 0 评论 -
网络安全传输系统(5)-账号管理系统
1、SQlite介绍账号管理系统显然需要用到数据库,开源的数据库有MySQL,SQlite等,由于SQlite是一个轻量级、跨平台的数据库,非常适用于嵌入式系统中,因此我们选用SQlite数据库。SQlite有如下优点:◇轻量级先说它的第一个特色:轻量级。想必SQLite的作者很看重这个特性,连它的Logo都是用的“羽毛”,来显摆它的轻飘飘。SQLite和C/S模式的数据库软件不同...原创 2017-06-27 13:26:13 · 1027 阅读 · 0 评论 -
网络安全传输系统(1)-功能介绍
网络安全传输系统需要实现以下功能:1、基于客户机/服务器模型,能够实现文件的上传和下载2、对TCP包的明文数据通过OpenSSL加密3、采用线程池技术来实现多个客户机访问的功能4、采用SQlite来保存客户机的账号和密码更多Linux资料及视频教程点击这里...原创 2017-06-26 21:24:18 · 1185 阅读 · 0 评论 -
树莓派3-搭建SAMBA服务器
转自:http://www.ncnynl.com/archives/201608/738.html这是一个非常好的学习网站,建议大家学习!http://www.ncnynl.com/搭建SAMBA服务器安装sambasudo apt-get updatesudo apt-get install samba samba-common-bin配置文件smb.con...转载 2017-08-13 22:14:34 · 16596 阅读 · 1 评论 -
GTK学习(1)-常用控件之窗口( GtkWindow )
转自http://blog.csdn.net/lianghe_work/article/details/47087109项目中需要用到GTK,在这里整理几个经常用到的知识点。窗口的创建:GtkWidget *gtk_window_new(GtkWindowType type);GtkWindowType是一个枚举,有两种情况:GTK_WINDOW_TO...转载 2017-08-07 13:45:29 · 1116 阅读 · 0 评论 -
Linux-视频监控系统(14)-项目总结
1、功能介绍本项目的功能其实很简单,但是要从0开始设计还是需要设计到许多编程技术的,主要的功能有下面2个1、在Linux客户机中可以实时查看当前视频,及实时监控,并显示帧率、字节数等信息。另外支持多个客户机同时连接、支持快照功能2、能够把采集到的视频保存到视频监控端中2、实现方法及用到的技术在开发过程中需要用的技术有:GDB 调试技术USB U...原创 2017-09-25 08:13:14 · 1310 阅读 · 0 评论 -
Linux-视频监控系统(13)-BUG统计及修复
经过大量的实验后,发现了如下几个BUG:1、客户机的关闭导致服务器崩溃,出现断错误2、当服务器段错误出现后,再次开启服务器无法再次进行视频编码,移除视频文件后正常3、打开多个客户端时帧率下降很快4、打开多个客户端时会发生死机现象BUG1首先这个问题和客户机有关,我们把代码定位在net.c函数中。在仔细分析,问题应该在处理客户机连接的线程里面,我们使用gdb调试,...原创 2017-08-31 20:27:29 · 725 阅读 · 0 评论 -
Linux-视频监控系统(9)-移植到树莓派中的计划
关于树莓派的的使用方法我就不说好了。由于树莓派硬件平台完善,内核软件也更新比较快,因此我打算把这个项目移植到树莓派3中,之前是在mini2440中实现的。需要移植的部分就是服务器代码了,由于服务器的代码属于应用层的,和硬件不相关,因此可以直接把可执行文件拷贝到树莓派3中运行。之前的硬件平台是:mini2440开发板,摄像头是中星微ZC301的摄像头,比较老旧,并且没有麦克...原创 2017-08-15 22:03:25 · 921 阅读 · 0 评论 -
Linux-视频监控系统(12)-移植到树莓派中
由于之前的代码编写及测试工作在Linux PC上都已经完成,现在只需要移植到树莓派中即可。在这里我们有2项任务要做首先需要修改源代码的编译工具,把gcc修改成arm-linux-gcc(具体的工具要参考你的机器)然后需要在树莓派中安装ffmpeg包,具体可以参考我的博客:http://blog.csdn.net/u013181595/article/details/7...原创 2017-08-27 20:57:05 · 824 阅读 · 0 评论 -
Linux-视频监控系统(11)-监控系统初步完善
代码写了这么久,期间也碰到了各种各样的问题,解决方法都记录在了我的博客里面。这里面记录一下自己开发的思路和方法。现在项目在原来的基础上又增加了以下功能:1、创建了线程池,支持多个客户机的访问2、可以保存捕捉到的视频和图片,并存储在当前路径上注意:如果要运行这个代码需要安装ffmpeg为了开发方便,目前安装的是ffmpeg for X86,接下来需要运行在开发板上,所以...原创 2017-08-27 10:20:54 · 1207 阅读 · 0 评论 -
Linux线程同步之读写锁(rwlock)
读写锁和互斥量(互斥锁)很类似,是另一种线程同步机制,但不属于POSIX标准,可以用来同步同一进程中的各个线程。当然如果一个读写锁存放在多个进程共享的某个内存区中,那么还可以用来进行进程间的同步,和互斥量不同的是:互斥量会把试图进入已保护的临界区的线程都阻塞;然而读写锁会视当前进入临界区的线程和请求进入临界区的线程的属性来判断是否允许线程进入。相对互斥量只有加锁和不加锁两种状态,读写锁有三...转载 2017-08-27 08:43:04 · 634 阅读 · 0 评论 -
GTK学习(4)-主循环(main loop)的工作原理
GTK+主循环(main loop)的工作原理我们知道GUI应用程序都是事件驱动的。这些事件大部分都来自于用户,比如键盘事件、鼠标事件或笔点事件。还有一些事件来自于系统内部,比如定时事件、socket事件和其它文件事件等等。在没有任何事件的情况下,应用程序处于睡眠状态。因为这种事件驱动机制,GUI应用程序都毫无例外的需要一个主循环(main loop)。主循环(main loop)控...转载 2017-08-07 15:45:24 · 10523 阅读 · 0 评论 -
GTK学习(3)-Lable、pixbuf、single、GtkEntry
添加标签标签主要是显示文本信息,用作标志。标签的创建:GtkWidget *gtk_label_new(const gchar *str);str:文本内容返回值:标签指针设置标签的内容:void gtk_label_set_text (GtkLabel *label,const gchar *str);label:操作的标...转载 2017-08-07 14:15:11 · 946 阅读 · 1 评论 -
GTK学习(2)-布局管理
GTK+中用于管理各种构件布局的是一类特殊的构件,称作布局容器(Layout Containers),这类构件不可见,并且有很多种,常用的有以下几种:GtkHBox:水平组装盒GtkVBox:垂直组装盒GtkTable:表组装GtkAlignment:可以控制子构件的对其方式和大小GtkHBox和GtkVBoxGtkHBox可以将它的子构件横向排列,GtkVBox可以...转载 2017-08-07 13:53:32 · 595 阅读 · 0 评论 -
网络安全传输系统(2)-框架搭建
框架搭建需要实现文件上传和下载等的基本功能网络协议采用TCP协议,通过TCP协议传输文件打算采取如下的顺序(针对客户机而言):1、先发送命令,1代表上传,2代表下载,3代表退出2、发送文件名3、发送文件长度4、发送文件数据因此对于上传文件客户机和服务器分别遵循如下顺序客户机:1、获取需要上传的文件名2、打开文件3、发送命令14、发送文件名5、发...原创 2017-06-26 21:45:33 · 1020 阅读 · 0 评论 -
网络安全传输系统(3)-加密传输
1、介绍网络传输中有很多加密技术,有DES、AES、RSA、SSL等。我们这里采用OpenSSL的开源加密算法。SSL协议位于TCP/IP协议与各种应用层协议之间,利用数据加密技术,可确保数据在网络上之传输过程中不会被截取及窃听。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(TCP)之上,为高层协议提供数据封装、压缩、加密...原创 2017-06-27 09:19:02 · 3686 阅读 · 0 评论 -
12、madplay的MP3播放器移植
1、使能声卡将对应开发板的内核拷贝到需要的目录下,开始配置内核,运行#make menuconfig ARCH=arm然后进去Device Driver->Sound Card Support->ALSA选择片上的声卡ALSA for SoC audio support,选择对应芯片的声卡驱动返回ALSA配置层,勾选OSS Mixer API和OSS PCM API...原创 2017-05-22 21:08:46 · 667 阅读 · 0 评论 -
11、U-boot编译及下载
1、编译先配置开发板,运行#make mini2440_config提示Configuring for mini2440 board...开始编译,运行#make ARCH=arm CROSS_COMPILE=arm-linux-持续大概2分钟的时间,在当前目录下生成u-boot.bin文件2、烧写u-boot.bin开发板设置成nor flash模式启动,打开Secur...原创 2017-05-22 21:02:27 · 386 阅读 · 0 评论 -
在linux下安装mplayer和解码器
一、准备工作:1、下载几个必要的软件包(解码器):all-20110131.tar.bz2 和 windows-all-20071007.zip需要的安装包及下载地址:1、MPlayer-1.0rc4.tar.bz2 :mplayer源代码包,下载地址:http://www.mplayerhq.hu/MPlayer/releases/2、all-20110131.tar.bz2 :解码器安装包...转载 2017-05-28 21:38:58 · 2628 阅读 · 0 评论 -
解决开发板ping不通主机和虚拟机的问题
使用TFTP和NFS从虚拟机下载文件或者制作根文件系统的前提是开发板能够ping同虚拟机!相信很多人都像我一样有过ping不通的经历,经过2、3天的研究和实验后终于把问题解决了,而且屡试不爽。最后得出结论ping不通最大的问题就是3者不位于同一网段,只要设置成静态ip且位于同一网段一定能ping通!下面介绍1、硬件情况及网络情况我的开发板是mini2440,...原创 2017-05-23 20:51:37 · 21357 阅读 · 30 评论 -
6、进程间通信
Linux进程间通信(IPC:interprocess communication)Linux进程间通讯的主要方式有:1、无名管道(pipe)2、有名管道(FIFO)3、信号量(semaphore)4、信号(single)5、共享内存6、消息队列7、套接字(socket)1、无名管道(pipe)一个进程在管道的尾部写入数据,另一个进程从管道的头部读出数据。管道包括...原创 2017-04-04 09:59:46 · 337 阅读 · 0 评论 -
5、Linux进程和线程编程
1、进程1.概念进程是一个具有一定独立功能的程序的一次运行活动。特点: 动态性、并发性、独立性、异步性进程ID(PID): 标识进程的唯一数字,父进程的ID(PPID),启动进程的用户ID(UID)2.进程互斥、同步、临界区、临界资源、临界区、死锁互斥:进程互斥是指当有若干进程都要使用某一资源时,但该资源在同一时刻最多允许一个进程使用,这时其他进程必须等待,直到占用该...原创 2017-04-03 10:16:55 · 284 阅读 · 0 评论 -
4、Linux时间编程
1、格林威治标准时间定义: Coordinated Universal Time(UTC),世界标准时间函数原型: struct tm *gmtime(const time_t *timep);函数功能: 将timep指定的日历时间转换成标准时间头文件: #include<time.h>返回...原创 2017-04-03 10:14:38 · 357 阅读 · 0 评论 -
3、GDB程序调试及Coredum
GDB简介GDB是GNU发布的一款功能强大的程序调试工具。GDB主要完成下面三个方面的功能:1、启动被调试程序。2、让被调试的程序在指定的位置停住。3、当程序被停住时,可以检查程序状态(如变量值)。GDB使用流程1.编译生成可执行文件:gcc -g tst.c -o tst2.启动GDB:gdb tst3.在 main函数处设置断点:break main4.运行...原创 2017-04-02 17:09:25 · 317 阅读 · 0 评论 -
Linux-视频监控系统(1)-产品设计规划
打算设计一个视频监控系统,可以实现以下功能:1、在Linux的PC端实时查看当前视频2、把采集到的视频存储到开发板的SD卡中硬件平台:mini2440开发板(或者树莓派3)传输方式:可以通过有线或者无线传输,如果时间充足将在树莓派3上采用无线的方式实现,现在在mini2440上采用有线的方式实现。系统可以分为2个部分,采集端和监控端,分析之后这2个端分别需要实现以下...原创 2017-07-11 15:39:12 · 1497 阅读 · 1 评论 -
Linux-视频监控系统(2)-Epoll的介绍及使用
1、什么是Epoll1.1阻塞型IO和多路复用假如说现在有一个进程需要对设备进行读写,但是这个过程一般需要时间不能马上完成,为了节约CPU资源,这时候一般进程都采取阻塞的方法,把自己挂起,等有设备已经完成操作了再自行其他程序。这种等待方法叫做阻塞型IO假如一个进程需要同时对4个设备文件进行监控,比如说需要监控打印机有没有打印完成、键盘有没有输入数据,这个过程就叫做多路复用。那么哪个函数...原创 2017-07-11 15:48:42 · 1218 阅读 · 0 评论 -
网络安全传输系统(4)-线程池优化
1、线程池原理在客户机/服务器模型中,对每个客户机的连接都创建一个线程来为期服务,这种方式好像没什么不妥之处。但是当我们的任务需要大量进行大量线程的创建和销毁操作时,这个消耗就会变成的相当大。比如说每秒中需要创建及销毁10000个线程,这对服务器来说压力会非常大,同时如果处理时间很短,以至于创建和销毁的时间远大于处理的时候,这就非常不划算了。因此这里引入线程池的概念:线程池就是有一堆已经创...原创 2017-06-27 13:03:24 · 817 阅读 · 1 评论 -
9、Linux下tftp服务器的安装及配置
在交叉开发环境中tftp是很常见的一种工具,常用来和虚拟机连接下载内核文件安装并启动tftp需要以下流程在红帽的光盘映像中有tftp的安装包,可以挂在光盘获得,运行#mount /dev/cdrom /mnt/在其他Linux的光盘映像文件中应该也有tftp安装包,然后开始安装tftp由于安装tftp依赖于xinetd安装包,先安装xinetd#rpm -ivh /mnt/Packag...原创 2017-05-19 23:34:20 · 4708 阅读 · 2 评论 -
10、Linux根文件系统的制作
根文件系统的制作1、建立根文件系统及目录1.1 创建目录#mkdir rootfs#cd rootfs#mkdir bin dev etc lib proc sbin sys usr mnt tmp var#mkdir usr/bin usr/lib usr/sbin lib/modules1.2 创建设备文件Linux系统中...原创 2017-05-22 20:49:08 · 1007 阅读 · 0 评论 -
Linux-视频监控系统(4)-摄像头子系统实现
这个子系统里需要实现摄像头的初始化,Epoll事件的添加,处理函数的编写以及开始采集函数,这里为了方便起见,先把处理函数设置为保存读取到的图片。为了方便描述定义一个结构:struct v4l2_dev{ int fd;//设备文件fd __u8 name[32];//保存摄像头标签 __u8 drv[16];//驱动名字 struct buf *buf;//图片数据的指针...原创 2017-07-12 16:15:04 · 4529 阅读 · 0 评论 -
motion源代码分析
转自:http://blog.csdn.net/sakaue/article/details/22816475楔子前几天研究了如何将ffmpeg编入motion,并实现录像功能。现在研究下motion的工作流程。几个主要模块motion.c 主程序,视频采集编码主循环 ffmpeg.c 一个代理模块,封装了ffmpeg的方法,根据v4l获取的数据编...转载 2017-06-26 20:51:00 · 1383 阅读 · 0 评论 -
OpenSSL
在很多加密环境中,我们都需要使用OpenSSL。很多时候我们都不知道OpenSSL到底是什么东西。准确的来说,OpenSSL只是一套工具包软件,用于生成X.509协议中所使用的密钥,公钥等文件。举例来说,我们都知道HTTP和HTTPS所代表不同的意思,HTTPS表示使用加密方式对数据进行传输,但是数据是怎么样进行加密的呢?这里有几个加密协议的版本SSL V2, SSL V3和TLS。这个加密...转载 2017-06-14 09:42:04 · 672 阅读 · 0 评论 -
USB摄像头驱动配置及V4L2编程
1、摄像头驱动开发1.1 摄像头软件系统架构摄像头系统架构分为四层:摄像头、支持V4L2的摄像头驱动、V4L2核心、应用程序。V4L2核心是Linux系统自带的组件,它可以屏蔽摄像头驱动层的差异,不管底层的摄像头有什么差异,上层应用统一调用V4L2来实现对摄像头的操作。因此驱动程序和应用程序都需要遵循V4L2规范1.2 摄像头驱动使能#make menucon...原创 2017-06-26 10:25:06 · 5387 阅读 · 2 评论