已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
I本科学生毕业论文(设计)题 目 (中 文 ): 基 于 Linux下 的 图 像 传 输(英 文 ): Image transmission based on Linux姓 名学 号院 ( 系 )专 业 、 年 级指 导 教 师2014 年 5 月 8 日II目 录绪论 .11 linux 图像传输技术简介 .21.1 linux 的背景 .21.2 linux 图像传输协议的特点 .31.3 linux 图像传输的未来发展方向 .32 linux 图像传输系统总体设计 .42.1 系统总体方案设计与比较 .42.2 系统总体程序流程图 .63 linux 图像传输系统平台分析 .73.1 系统平台-s5pv210 开发板资源配置概要 .73.2 系统平台-s5pv210 开发板 linux 系统分析 .104 linux 图像传输通信协议分析 .124.1 linux 平台通信协议分析 .144.2 linux 平台通信协议代码实例 .164.3 多系统平台通信协议分析 .184.4 多系统平台通信协议代码实例 .195 linux 图像传输多任务实现 .205.1 linux 图像传输多任务处理方式 .205.2 linux 图像传输多任务处理方式代码实例分析 .216 linux 图像传输系统用户登录与注册 .226.1 系统用户登录与注册实现方式 .226.2 实例代码语句介绍 .236.2.1 sql 语句介绍 .23III6.2.2 sql 语句 C 编程 .247 linux 图像传输系统客户端开发 .257.1 TFT 图形库分析 .257.2 系统客户端框架及程序分析 .258 linux 图像传输系统服务器开发 .328.1 系统服务器框架及程序分析 .329 测试结果和问题分析 .33结论 .34参考文献 .35致 谢 .36IV插图索引图 1 系统框架图 .4图 2 系统服务器端框架图 .4图 3 系统客户端框架图 .5图 4 飞秋客户端框架图 .5图 5 系统客户端程序总流程图 .6图 6 系统服务器程序流程图 .6图 7 S5pv210 开发板外观 .8图 8 S5pv210 核心板加底板 .8图 9 串 口 实 物 图 .8图 10 串 口 原 理 图 .9图 11 串口管脚定义图 .9图 12 网络芯片实物图 .9图 13 LAN9220 芯片 .10图 14 RJ45 插座内部原理图 .10图 15 有线以太网接口原理图 .10图 16 UDP 开发流程 .15图 17 TCP 三次握手 .15图 18 TCP 四次挥手 .16图 19 TCP 开发流程 .17图 20 程序总流程图 .25图 21 接受 UDP 数据线程流程图 .26图 22 触摸屏线程流程图 .29图 23 聊天界面流程图 .29图 24 文件请求传输流程图 .31V基于 linux 下的图像传输摘 要论文完成了linux平台下客户端顺利登陆和上线并实现了与windows数据传输功能,同时实现了一个简易的A8平台管理系统。A8平台管理系统主要功能是通过开发板客户端与windows平台飞秋传输图片。首先,熟悉linux开发环境,分析linux下的网络协议,以及与windows平台数据发送和接收过程,为后续的图像传输做好准备。其次,分析sqlite3数据库的使用,最终能实现用户的登陆与注册中。再次,编写linux服务端应用程序。最后,测试整个项目功能,针对相应的问题,做调试和优化。 本文涉及技术较多,包括内核移植、根文件系统制作、TCP、UDP、Sqlite3数据库、TFT图形库、飞秋传输协议等核心技术。论文在测试时用一个图片文件在开发板客户端和pc平台的飞秋客户端实现数据传输,以达到在项目中对以上技术的应用。【关键词】:s5pv210开发板 linux 内核 网络 图像传输VIBased on image transmission under LinuxAbstractClient smooth landing paper completed the Linux platform and online and realize the function of data transmission with Windows, and implements a simple A8 platform management system. A8 platform management system main function is through the development board with Windows client platform fly autumn transfer photos.First of all, familiar with Linux development environment, analysis of network protocol under Linux, and Windows platform data sending and receiving process, to be prepared for the subsequent image transmission. Second, the analysis, the use of sqlite3 database finally can realize the user login and registration. Again, to write a Linux server application. Finally, test the functionality of the entire project, according to the corresponding problem, making debugging and optimization.In this paper, which involves many technologies, including the kernel transplantation, the root file system, TCP, UDP, Sqlite3 database, TFT graphics library, fly in the autumn of core technology such as transport protocol. This paper uses an image file to achieve data transmission board in the development of client and PC client platform flight autumn at the time of testing, in order to achieve the above technology application in the project.【 key words 】 : s5pv210 development board Linux kernel network image transmission7绪论这些年来,计算机发展非常迅速,每天都有不同的技术诞生,发展实在太快了。Linux从1991年诞生。距离现在也有十几个年头了,它的功能也完善的比较好,比较丰富。它一般跑那种ARM、X86平台还是性能相当不错的,兼容性好。不比那种商业操作系统差,现在有很多公司和个人都在往嵌入式Linux方向,做一些研究。这么些年来,许许多多的企业看到了利用Linux 它可以做那种网络服务器,这种东西是全方位的。这是因为在linux上具备了大量的免费网络服务器软件、数据库和网页的开发工具。这篇论文主要讲述了基础系统是linux,在pc平台,和移动平台进行图像之间的传输。就是在这两个上面分别开发服务器和客户端。这种基于linux下的图像传输技术将拥有广阔的市场前景,它具备跨平台性且稳定性强。在科学高度发展的今天linux将以它特有的优势来服务于未来的IT行业。Linux下的图像传输技术可以适用于多平台。Linux能与windows平台友好的时刻通信,它自己本身的优势就是在于linux自己具备强大的网络功能。因此非常适合不同平台用户即时通信的需要,具有非常好的发展潜力,市场价值非常大。另外它的传输性能高,十分安全、可靠。 现代社会信息科技不断更新。以前许多从未听过的新科技极大地正在改变着我们传统的生活方式。特别是各种通信网络技术的飞快发展,在宽广的生活和经济领域发挥着重要的作用。本课题主要研究的是基于linux下的图像传输。而linux即是鲜明的开源特性。大型企业都投入巨额打造基于Linux的产品应用和解决方案。 开源操作系统在这个行业应用的非常广泛,开源软件这个产业的整套服务,整个体系,也是要越来越完善。Linux强大的网络功能特性,将使它在通信领域拥有更广阔的发展前景。81 linux 图像传输技术简介1.1 Linux 的背景Linux 相信大家已不陌生,它广泛使用各个领域。很多人都在使用 linux,因为 Linux 源代码是开发的,因为它又是遵循那种 GPL 标准,什么是 GPL 标准,估计大多数人不知道。其意思就是一种自由软件联盟。由于 linux 的免费、源码开发,越来越多的企业都在使用它。其开发自由的特点,也引发了许多程序高手来联合维护并完善 linux 内核程序。Linux 与 Unix 一样高效稳定。在网上就可免费下载。操作系统不仅要有核心程序,还应当包括系统程序和应用程序才可具备实用性,关于系统程序的开发,如:Free Software Foundation 提供了大量的系统程序。有很多公司和个人也搞应用程序开发,为方便安装,很多团体开发者都将设计成软件安装包。在网上,可以下载到多版本的软件安装包。在硬件支持上,Linux 支持如 ARM、Sparc、Mips、Motorola PowerPC 和x86 等,使用 linux 操作系统对于那些搞硬件的人来说,挺好的,他们能够根据自产的硬件开发合适的 linux 驱动程序,提高产品竞争力,自己的产品价格也可以买的很好。 软体方面,凡是那种熟稔 Lotus 1-2-3 的人,看到这样方便的软件,都还蛮开心的,其稳定的服务器功能,对于架设 Intranet 和 Internet 比较适合。 1.2 linux 图像传输协议的特点Linux不仅能对局域网提供网络服务。另外能对整个因特网上的客户端供网络服务,Linux不仅能使用软件包作为打印服务器、文件服务器。还能作为新闻组服务器和工作组服务器等。使用Linux的一个优势是可以从因特网获取资源,linux的资源丰富,开源的、免费的,也许碰巧在那边,一个Linux新闻组或者邮件列表里,有个人就很希望帮助别人解决问题。因为源代码是可以获得的,别人甚至可以自己给软件打补丁来把这个需要解决的问题修正掉请记住Linux的文化就是由于人与人之间的互相帮助而更加兴旺。Linux发展前景将会越来越好。1.3 Linux 图像传输的未来发展方向相比较于windows、wince,Linux是开放源代码。Linux的内核可裁剪,运行效率高。Linux是开放源代码的OS,与中国国情相符。Windows CE、windows需要版权费用。Linux不仅支持x86芯片。还是一个跨平台的系统。更换CPU时就不会遇到更换平台的困扰。它提供了对包括成百上千兆的以太网络。还有无线网络、光纤甚至卫星的支持。现在,许多的嵌入式设备需要拥有网络功能。Linux的网络支持性能比较突出,涵盖面广,稳定性好。未来,linux将在网络图像传输方向拥有更广阔的市9场前景。中小企业夸行业领域多,合作伙伴也多,应用方案也比较多。Linux的价格低廉,符合中小企业的发展需求。中小企业可直接在其上做应用开发。综上所述,Linux图像传输是基于linux网络传输功能实现的,其图像传输的跨平台性和稳定性,对于网络安全行业,人脸识别技术,政府安全监控领域,都有广阔的应用前景。2 linux图像传输系统总体设计2.1系统总体方案设计与比较系统的总体框架图如下:图1 系统框架图系统服务器端:图2 系统服务器端框架图注:该服务器。它的主要作用是用于用户账号和密码的存储。以实现用户的登录与注册。系统客户端:图3 系统客户端框架图系统客户端系统服务器端 飞秋客户端用户界面登录与注册 双向图像传输Linux 系统 pc 平台 UDP 协议Linux系统 s5pv210 开发板平台TCP/UDP协议飞秋协议LAN9220 网口10注:系统客户端通过LAN9220的网络芯片网口,进行图像数据的传输。飞秋协议主要用于跨系统平台进行图像数据传输。其实现聊天、文件、图像数据传输等多任务功能,是采用linux系统下的多线程完成。飞秋客户端:图4 飞秋客户端框架图注:飞秋客户端主要根据飞秋通信协议来进行图像数据传输,其运行环境是基于windows系统的pc平台。本图像传输系统之所以选用以上C/S架构设计,主要是为了便于用户数据的维护。对于本图像传输系统之所以选用linux系统的运行环境,主要在于其良好的网络支持以及安全可靠性高。并且内核源码开发,便于本系统的后续深入升级开发。2.2 系统总体程序流程图系统总体程序设计如下:1.系统客户端程序总流程图图5 系统客户端程序总流程图windos 系统 pc 平台 飞秋112.系统服务器程序流程图图6 系统服务器程序流程图本图像传输系统实现聊天、文件、图像传输,其多功能的实现采用linux多线程的程序框架。根据linux下的TCPUDP协议、飞秋协议来进行数据传输。本系统总共创建三个线程,分别实现信息的接受、信息的发送、图像数据、文件的发送。3 linux图像传输系统平台分析3.1 系统平台-s5pv210开发板资源配置概要核心板主要元件:1.CPU 型号为 S5PV2102.DDR2 内存,一共 4 片,型号为 K4T1G164Q3.NAND FLASH,1G 版本核心板为 K9K8G08,256M 版本核心板为 K9F2G084.有线网络芯片,10/100Mbps,SMSC LAN92205.电源转换芯片底板主要元器件:1.电源接口,输入电压为 5V。电源上串联有一个 1.1A 的自恢复保险丝。2.电源开关,选用进口优质电源开关,可反复开关不低于 10 万次。3.CVBS 视频输出端口,用于连接电视机。开始创建网络服务初始化数据库接受解析数据用户注册 用户登录结束124.100M 有线以太网接口。5.TF 卡插座,支持从 TF 卡启动。6.板载 USB WIFI 模块(板载和外接二选一),支持 802.11n 150Mbps。7.音频输出接口,采用 3.5mm 耳机插座。8.板载麦克风。9.启动模式设置开关,可以设置多种启动模式。10.4 个用户 LED,由用户程序控制 LED 的亮灭。11.摄像头输入接口,可以连接定制的摄像头扩展板。12.液晶输出接口,可以外接各种液晶屏模块。13.RTC 时钟电池。14.9 个用户按键,支持常用的功能操作。15.1 个复位按键。图7 S5pv210开发板外观U A R T 1开关电源电源插座U S B O T GH D M I视频端口以太网 U A R T 3复位键T F 卡插座板载U S B W I F I焊接位置U S B H O S T 1U S B H O S T 2U S B H U B芯片U S B H O S T 3耳机插座麦克启动模式设置开关耳机插座用户L E D摄像头接口插座液晶屏接口插座液晶屏背光驱动电路R T C 时钟电池用户功能按键U A R TS P IG P I O接口核心板图8 S5pv210核心板加底板13s5pv210开发板串口介绍S5PV210 一共有四个串口,其中 2 个通过 SP3232 电平转换芯片连接到 DB9插座。另外 2 个直接从 CPU 连接到开发板 J17 插座。开发板上 DB9 插座:串口 1对应 CPU 的 UART0 信号。串口 3对应 CPU 的 UART2 信号。图9 串 口 实 物 图图10 串 口 原 理 图管脚定义:开发板的 DB9 串口信号定义和 PC 的串口定义完全一样:2:RXD 接收信号3:TXD 发送信号5:GND 公共地 图11 串 口 管 脚 定 义 图S5PV210内部 iROM 启动时候,是用 UART2(也就是开发板的串口 3)作为信息输出的,有的开发板厂家为了节约成本,只提供一个串口 1,不提供串口 3,这样调试将非常麻烦。s5pv210开发板网络芯片介绍S5PV210 芯片内部不具备以太网功能,是通过外扩 LAN9220 芯片实现。14图12 网络芯片实物图LAN9220 具有以下特点:完全符合 IEEE 802.3/802.3u 标准集成以太网 MAC 和 PHY支持 10BASE-T 和 100BASE-TX支持全双工和半双工全双工流控制半双工流控制背压生成和删除报头自动生成和检查 32 位 CRC自动填充有效负载和进行删除环回模式低引脚数和小体积封装适用于小型系统设计LAN9220 芯片位于核心板,位于底板的元件只有集成变压器的 RJ45 插座。图 13 LAN9220芯片RJ45 插座型号是 HR911105A。这是集成了网络变压器和 LED 指示灯的RJ45 插座,其内部功能电路图如下所示:图14 RJ45 插座内部原理图开发板上 J15 为该功能接口图15 有线以太网接口原理图LAN9220和CPU 连接数据宽度为 16bit,信号为 Xm0DATA0-Xm0DATA15。地15址线为 Xm0ADDR1-Xm0ADDR7,因为是 16 位数据宽度,所以 Xm0ADDR0 是无意义的。另外 Xm0ADDR11 作为 FIFO 选择控制。片选信号是 Xm0CSn5,物理基地址是0xA8000000。中断是连接到 XEINT9。3.2 系统平台-s5pv210开发板linux系统分析Bootloader部分:就和电脑上的那种BIOS差不多。可以工作在无操作系统的环境下,也可以工作在有操作系统的环境下。(1)在无操作系统环境下:主要完成基本硬件及堆栈的初始化,为应用程序做准备。(2)bootloader解析:在操作系统运行之前运行的一段或多段程序。初始化硬件设备、建立系统的内存空间映射图。使系统的软件硬件环境处于合适的状态。为调用操作系统内核,准备好正确的环境。加载内核,让系统运行起来。(3)Bootloader的种类繁多:针对不同的cpu架构,对bootloader的要求也不同,如: X86上有LILO、GRUB、ntldr等 对ARM架构的有u-boot、vivi、armboot等 对ppc架构的有ppcboot等Linux内核部分:Linux内核是Linux系统的核心。它的性能对整个系统的性能起决定作用。(1)Linux内核镜像格式种类:Image:直接生成并未压缩的内核,一般用于PC机 2zImage:Image的压缩版,采用gzip进行压缩,比Image体积小,但启动时需要进行自解压,嵌入式系统中一般采用此种方法uImage:是u-boot专用的一种内核镜像格式,它是在zImage的基础上又添加了一个长度为0x40的标签头,在u-boot启动时会去掉此头信息,仍按zImage启动,头信息主要用于区分不同格式的内核镜像。xipImage:片上执行的未压缩内核,用于norflash等设备(2)linux的启动过程可以分为两部分:板级引导过程后续通用引导过程根文件系统部分:有很多很多的文件组合在一起。它们大部分以文件的形式存放在外存当中,根据需要可随时调入内存使用。s5pv210开发板u-boot启动分析s5pv210从nandflash设备上启动分为两阶段的启动过程:16第一阶段使用汇编来实现。初始化一些依赖于CPU体系结构的东西。并调用第二阶段的代码第二阶段则通常使用C语言来实现。完成与体系结构无关的功能。这样可以实现更复杂的功能。而且代码会有更好的可读性和可移植性。s5pv210启动流程:u-boot第一阶段功能:(1).关闭看门狗,屏蔽所有的中断(2).设置CPU的速度和时钟频率(3).初始化系统动态内存控制器以支持DRAM(4).初始化LED或串口,用于开发阶段查看调试信息(5).简单NAND FLASH读取驱动(6).拷贝Bootloader第二阶段代码到SDRAM空间(7).设置好堆栈,为第二阶段代码做好准备(8).跳转到第二阶段代码的C程序入口点u-boot第二阶段功能:(1).MTD设备驱动初始化(2).uart、电源、时钟的修改和初始化(3).网卡、USB设备、SD卡等设备初始化(4).堆空间的初始化(5).提供一个命令行模式:进行下载更新等交互工作(6).将内核镜像从外部分存储设备读到SDRAM空间(7).传参并调用内核启动内核传参过程:(1).传递给内核的参数由多个结构体组成(2).各结构体放在一段连续的内存空间,起始地址为0x3000_0100(3).每一个结构体代表一条信息,并首尾相连(4).内核引导起来以后,将从指定内存按照同样的数据结构将数据取出s5pv210开发板linux内核启动分析Linux所用的内核镜像格式为zImage:Linux内核的启动过程大体分为三个阶段:(1).内核解压(汇编+C) 主要由arch/arm/boot/compressed/对zImage完成解压。并调用call_kernel跳转到下阶段代码。(2).板级引导阶段(汇编)17主要进行一些板子上的处理器的初始化等。(3)通用内核启动阶段(C语言)进入init/main.c文件。rest_init()会创建内核第一个线程,并进入线程函数kernel_init()在 kernel_init()中会初始化各种驱动并建立起标准输入/标准输出/ 错误输出,最后调用 init_post()在init_post()中会释放初始化内存段,标志着内核启动完成。根文件系统分析1.回顾 Bootloader 引导内核的过程:其中一步是 Bootloade 可以传一些东西给那个系统内核如下:root=/dev/mtdblock4 init=/linuxrc console=ttySAC0,115200各参数含义:root:指定根文件系统在 FLASH 分区中的位置init:指定 Linux 内核启动完毕后调用的第一个用户态 程序2.linuxrc 是由内核启动的第一个,也是惟一的一个用户进程,PID 为 1linuxrc 具体功能:通常和/bin/init 一样,除非用户重新实现它设置 SIGSEGV、SIGILL、SIGFPE 、SIGBUS 信号处理函数初始化控制台,设置环境变量(HOME、SHELL、USER 等)监听特定子进程状态总之,linuxrc 是后续进程的发起者。3./etc/inittab 解析名称 执行条件 说明sysinit 系统启动后最先执行 指定初始化脚本路径。只执行一次。askfirst 启动完 respawn 进程后 与 respawn 类似。不过 init 进程先输出“Please press Enter to activate this console”。等用户输入回车后才启动子进程。restart init 进程接收到 init 进程重启时执行的程序,通常是 initSIGHUP 信号时 程序本身。先重新读取、解析/etc/inittab文件,再执行 restart 程序 ctrlaltdel 按下 Ctrl+Alt+Del 按 Ctrl+Alt+Del 组合键时执行的程序linuxrc 解析 inittab 配置文件过程中。被指定的用户程序执行顺序如下:sysinit-wait-once-respawn-askfirst-ctrlaltdel-shutdown-restart18程序执行顺序与配置文件中的书写顺序无关执行完所有开机需要加载的进程或脚本后,开始监听子进程的运行状态如果 respawn、askfirst 子进程退出,则重启该进程4 linux 图像传输通信协议分析4.1 linux 平台通信协议分析linux 图像传输通信协议用到了一种 UDP 和一种那个 TCP 的方式TCPUDP 协议:UDP 它是可以不用去连接的,就像那种一个一个数据的包裹那样传输。其功能是:提供进程间通信能力。其特点是:(1)发送数据之前不需要建立连接;(2)不对数据包的顺序进行检查;(3)没有错误检测和重传机制。服务对象:主要用于那些面向查询-应答的服务。TCP 是面向连接的流式协议。可靠、出错重传、且每收到一个数据都要给出相应的确认,通信之前需要建立链接。服务器被动链接,客户端是主动链接。 特点:建立链接-使用链接-释放链接(虚电路)TCP 数据包中包含序号和确认序号对包进行排序并检错,而损坏的包可以被重传窗口式流量控制、慢启动和拥塞避TCP 的三次握手与四次挥手:图 16 TCP 三次握手图 17 TCP 四次挥手如何在 TCP 和 UDP 之间取舍广播和多播应用必须使用 UDP19 简单的请求-应答应用程序可以使用 UDP 对于海量数据传输不应该使用 UDP4.2 linux 平台通信协议代码实例UDP 协议代码实例图 18 UDP 开发流程int socket();功能:创建一个用于网络通信的 I/O 描述符(套接字)参数: family:协议族AF_INET,AF_INET6,AF_LOCAL,AF_ROUTE,AF_KEYtype:套接字类SOCK_STREAM,SOCK_DGRAM,SOCK_RAW,SOCK_SEQPACKETprotocol:协议类别0,IPPROTO_TCP,IPPROTO_UDP,IPPROTO_SCTPint bind();功能:将本地协议地址与 sockfd 绑定参数: sockfd: socket 套接字 myaddr: 指向特定于协议的地址结构指针 addrlen:该地址结构的长度ssize_t recvfrom();功能:接收 UDP 数据,并将发送者的地址保存在 from 中参数: Sockfd: 套接字 buf: 接收数据缓冲区 Nbytes: 接收数据缓冲区的大小20ssize_t sendto();功能:用于发送数据参数: sockfd:套接字 buf:发送数据缓冲区 nbytes:发送数据缓冲区的大小flags:一般为 0 to:指向目的主机地址结构体的指针 addrlen:to 所指向内容的长度TCP 协议代码实例图 19 TCP 开发流程int listen();功能: 将套接字由主动修改为被动 使操作系统为该套接字设置一个连接队列,用来记录所有连接到该套接字的连接参数: sockfd: socket 监听套接字 backlog:连接队列的长度int accept();功能:建立连接,是一个队列,阻塞的。参数: sockfd: socket 监听套接字 addrlen:套接字地址结构体长度int connect();功能: 主动跟服务器建立链接21 连接成功后才可以开始传输数据(对于 TCP 协议)参数: sockfd: socket 套接字 addr: 需连接的服务器地址结构 addrlen:地址结构体长度4.3 多系统平台通信协议分析多系统平台通信协议主要是走飞秋协议进行图像传输,关于飞秋协议的介绍如下:飞秋协议数据包分析现行 IPMSG 为版本 1: 通信报文以字符串形式进行收发 基本格式如下 版本号:包编号:发送者姓名:发送者机器名:命令字:附加信息 举例 1:1238605487:user:machine:32:hello 版本号固定为 1 包编号一般为不重复的十进制数,通常可以由 time 函数产生 发送者姓名和发送者机器名可以任意,但在整个通信中必须保持一致飞秋命令字分析命令字报文中的命令字是一个 32 位无符号整数包含命令(最低字节)和选项(高三字节)两部分常用基本命令(带有 BR 标识的为广播命令)IPMSG_BR_ENTRY 用户上线IPMSG_BR_EXIT 用户退出IPMSG_ANSENTRY 通报在线IPMSG_SENDMSG 发送消息IPMSG_RECVMSG 通报收到消息IPMSG_GETFILEDATA 请求通过 TCP 传输文件IPMSG_RELEASEFILES 停止接收文件IPMSG_GETDIRFILES 请求传输文件夹常用选项 IPMSG_SENDCHECKOPT 传送检查(需要对方返回回执)22IPMSG_FILEATTACHOPT 传送文件选项附加信息附加信息的内容根据命令字的不同而不同4.4 多系统平台通信协议代码实例飞秋组包代码实例分析typedef struct/数据包 结构体int ver_num;char massage1255;char filemsg255;char user1255;char machine1255;unsigned int command;unsigned int bag_num;MSG_flow;MSG_flow msg_flow;char BR100=;unsigned int time_num=time(NULL);/包编号通过附加信息发送#define user j31 /使用者#define machine 84/主机名#define IPMSG_RECVMSG 0x00000021ULsprintf(BR,1:%d:%s:%s:%ld:%d,time_num,user,machine,IPM SG_RECVMSG,msg_flow.bag_num);用 sprintf 函数组包,将版本号、包编号、发送者姓名、发送者机器名、命令字、附加信息等变量组在一起,按一定的格式符放进定义的 BR 缓冲区里。飞秋数据包拆包代码实例分析typedef struct/数据包 结构体int ver_num;char massage1255;char filemsg255;char user1255;char machine1255;unsigned int command;23unsigned int bag_num;MSG_flow;MSG_flow msg_flow;char buf4096=;sscanf(buf,%*:%d:%:%:%d:%s,&msg_flow.bag_num,msg_flow.user1,msg_flow.machine1,用 sscanf 函数拆包,从 buf 中按一定格式符拆出版本号、包编号、发送者姓名、发送者机器名、命令字、附加信息等变量。5 linux 图像传输多任务实现linux 图像传输多任务实现主要 linux 下的多线程实现。其原理如下:对于一个进程它都是拥有自己的数据单元、代码单元和堆栈单元的,这样使得进程在进行建立、转换、取消操作时。肯定是必要很大的系统开销。为了减少系统开销,从进程中演化出了线程。线程存在于进程中,共享进程的资源。调度:线程是 CPU 调度和分派的基本单位。拥有资源: 线程自己一般不拥有资源。但它可以去访问其所属进程的资源。如进程单元段,数据单元以及系统资源。并发性不仅进程间可以并发执行。而且在一个进程中的多个线程之间并发执行。5.1 linux 图像传输多任务处理方式多线程的目的:多任务程序的设计一个程序可能要处理不同应用,要处理多种任务,如果开发不同的进程来处理,系统开销很大,数据共享,程序结构都不方便,这时可使用多线程编程方法。并发程序设计一个任务可能分成不同的步骤去完成。这些不同的步骤之间可能是松散耦合。运用线程的互斥,同步并发完成。这样可以为不同的任务步骤建立线程。网络程序设计为提高网络的利用效率。我们可能使用多线程。对每个连接用一个线程去24处理。5.2 linux 图像传输多任务处理方式代码实例分析1.int pthread_create();功能:创建一个线程。参数: thread:线程标识符地址。 attr:线程属性结构体地址。 start_routine:线程函数的入口地址。 arg:传给线程函数的参数。返回值:成功:返回 0。失败:返回非 0。2. int pthread_join();功能:等待子线程结束,并回收子线程资源。参数: thread:被等待的线程号。 retval:用来存储线程退出状态的指针的地址。返回值:成功返回 0,失败返回非 0。3.int pthread_detach();功能:使调用线程与当前进程分离参数:thread:线程号返回值:成功:返回 0,失败返回非 0。6 linux 图像传输系统用户登录与注册SQLite3 是一个开源的、内嵌式的关系型数据库SQLite3 特性:1、零配置 2、可移植253、紧凑 4、简单5、灵活 6、自由的授权7、可靠 8、易用6.1 系统用户登录与注册实现方式SQLite3 是一个小型的数据库。它可移植性好,很容易使用,很小,高效而且可靠。SQLite3 使用起来非常方便。命令敲入十分方便,如敲sqlite3 命令即可。如果文件不存在,则创建一个新的(数据库)文件。然后 sqlite3 程序将提示你输入 SQL。敲入 SQL 语句(以分号“;”结束) ,敲回车键之后,SQL 语句就会执行。6.2 实例代码语句介绍6.2.1 sql 语句介绍创建表:create 语句语法:create table 表名称 (列名称 1 数据类型, 列名称 2 数据类型, 列名称 3 数据类型, .);创建一表格该表包含 3 列,列名分别是:“id”、“name”、“addr”。插入新行:inser into 语句(全部赋值)给一行中的所有列赋值。语法:insert into 表名 values (列值 1, 列值 2,列值 3,列值 4, .);注意:列值为字符串时要加上号。修改表中的数据:update 语句使用 where 根据匹配条件查找。语法:update 表名 set 列 1 = 值 1 , 列 2 = 值 2, . 匹配条件;注意:当表中有多列、多行符合匹配条件时会修改相应的多行。当匹配条件为空时则匹配所有。匹配:where 子句where 子句用于规定匹配的条件。匹配条件语法:(基础) (操作符 例如:=、初始化登陆界面-初始化数据库-初始化广播- 创建触摸屏线程-创建 UDP 接受消息线程-创建 TCP 发送文件线程 -线程等待。图 21 接受 UDP 数据线程流程图void *UDP_recvfrom(void *arg)char buf4096=;struct sockaddr_in clientaddr;unsigned int client_len=sizeof(clientaddr);while(1)bzero(bzero(bzero(buf,sizeof(buf);int len=0;29len=recvfrom(socketfd_UDP,buf,4096,0,(struct sockaddr*)if(len0)inet_ntop(AF_INET,cliaddr_fd.connfd=connfd; ret=pthread_create(if(ret0)/线程创建失败perror(pthread_create);else/等待失败perror(accept);return NULL;34程序注解:从已连接 TCP 队列中取出一个已经建立的 TCP 连接,创建一个发送文件线程。传输文件数据。8 linux 图像传输系统服务器开发8.1 系统服务器程序分析代码实例分析:int main(int argc,char *argv)struct sockaddr_in cliaddr;SQL_init();great_socketfd();while(1)char buf200 = ;char cmd5=;socklen_t addrlen = sizeof(cliaddr);recvfrom(socketfd_UDP, buf, sizeof(buf), 0, (struct sockaddr*)strncpy(cmd,buf,3);printf(%s#n,buf);if(strcmp(cmd,#$1)=0)new_usr(buf);/注册用户if(strcmp(cmd,#$2)=0)login(buf);/用户登录return 0;程序注解: SQL_init()函数初始化数据库,great_socke
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 邮寄劳动合同解除协议
- 灌装加工劳务合同范本
- 街道投资合作合同范本
- 2025年考研心理学专业实验设计试卷(含答案)
- 绿化苗木供货合同范本
- 礼品订制采购合同范本
- 租房托管服务合同范本
- 福州家电运输合同范本
- 物业门面转让合同范本
- 网销与公司合同协议书
- 2025年下半年南通市通州区兴仁镇招聘城管协管员2人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年房屋中介居间合同协议
- 驾驶证理论考试科目一试题及答案
- 电工考证专栏2025年低压电工复审考试题库精细讲解(1)附答案
- 医院信息安全隐患排查及整改报告模板
- 物流搬运劳务合同范本
- 内蒙古农村信用社招聘考试(真题)
- 厂内物流规划介绍
- 2025年乡村振兴专干题库及答案
- 2025年任职理论考试题库及答案
- 认识农具的课件
评论
0/150
提交评论