当前位置:   article > 正文

安防监控项目——环境搭建和需求分析_摄像头环境搭建

摄像头环境搭建

目录

一、项目概要

二、环境搭建

三、需求分析


一、项目概要

把项目分三层、数据采集、数据传输和数据处理 

 

二、环境搭建

安装必要的库

 

然后搭建tftp、nfs环境。其实这些前面已经搭建完成了。 

 

三、需求分析

 一个项目首先需要有项目名比如这个就叫罗密欧,有项目组、组员和组长。还有时间。

然后引言:用来介绍一下项目是做什么的。可以解决什么实际问题。再什么场合下诞生的。项目是由谁发起的,贡献者都是谁。这部分是公司高层的战略什么的。

之后是功能的概述,

这是·一个项目的生命周期图 

 

这也是模块化编程的思想,再企业中一般都会有一个很好的架构师,来对整个系统进行分块,安排每个人的任务。这个架构是老师写的。我有一个自己的项目当完成这个项目后我会尝试自己设计一下。

 

这部分是很重要的。软件每个版本的库可能都是不一样的。而硬件不同型号参数可能也会不一样。所以再做项目时一定要指明这些,不然对于维护的人员来说是很不负责的行为。上面其实不太恰当,不够具体。

  1. 1、ftp服务器功能展示
  2. 服务器端: 客户端:
  3. $ ./server 192.168.1.200 5001 $ ./client 192.168.1.200 5001
  4. server sockfd :3. **************************
  5. waiting client connect... ***请输入 help 查看选项***
  6. acceptfd :4. **************************
  7. 目录清单已经成功发送 input >>> help
  8. acceptfd :4. *****************************************
  9. 文件传送完成 ***输入/功能*****************************
  10. acceptfd :4. ***list : 查看服务器所在目录的所有文件***
  11. 接收文件成功 ***get 文件名 : 下载服务器目录的文件****
  12. ***put 文件名 : 上传文件到服务器********
  13. ***quit : 关闭客户端*********************
  14. *****************************************
  15. input >>> list
  16. ***hello.c
  17. ***world.c
  18. ***src
  19. ***server
  20. ***linux.c
  21. ***testfile
  22. 服务器目录已经接收完毕
  23. input >>> get world.c
  24. 下载完毕
  25. input >>> put readme.txt
  26. 上传完毕
  27. input >>> quit
  28. fengjunhui@ubuntu:~/www.makeru.com.cn/ftpserver/testfile$ diff ../world.c world.c
  29. fengjunhui@ubuntu:~/www.makeru.com.cn/ftpserver/testfile$ diff ../readme.txt readme.txt
  30. 2、需求拆解 ========== 头脑风暴
  31. 需要服务器和客户端:==========>CS模型:
  32. 框架选择:
  33. TCP通信
  34. UDP通信
  35. 广播通信
  36. 组播通信
  37. 并发需求:
  38. 并发的支持数量:
  39. 不常用的并发:
  40. 多进程---多线程
  41. 常用的并发
  42. select <1024
  43. poll 之间
  44. epoll 百万级别
  45. V1.0版本:
  46. 服务器端功能:
  47. 1、响应客户端的请求
  48. 2、发送文件
  49. 3、接收文件
  50. 客户端:
  51. 1、帮助的功能:
  52. 2、list : 查看服务器所在目录的所有文件
  53. 3、get 文件名 :下载服务器目录的文件
  54. 4、put 文件名 : 上传文件到服务器
  55. 5、quit : 关闭客户端
  56. V2.0版本: ==== 增加的功能
  57. 1、支持规模为1000以下的用户并发量
  58. 2、服务器端支持对客户端用户权限的管理,并设置管理员的功能
  59. 3、可以显示客户端当前的文件列表
  60. 4、每个客户端访问的日期信息要显示在服务器上
  61. V3.0版本: ==== 增加的功能
  62. 1、增加会员与非会员的区别
  63. 2、上传或下载的功能要采用多进程或多线程的方式实现
  64. 3、可以根据是否是会员来适当的提升下载速度
  65. 4、支持断点续传的功能
  66. 5、支持图片文件的传输
  67. V4.0版本: ==== 增加的功能
  68. 1、增加音频的传输功能
  69. 2、增加视频的编解码和传输功能
  70. 3、改进算法并提供扩展接口
  71. ......
  72. 没界面,哈哈,不过这就是C语言的魅力,所以大家在掌握C之后需要扩展一门高级语言,为以后打下良好的基础
  73. 3、框架选择
  74. TCP通信,暂时不需要支持并发
  75. 参考PPT
  76. 4、协议接口制定
  77. 一般情况下的通信结构体封装:
  78. //
  79. typedef struct msgbuf{
  80. char type; //服务或功能的类型
  81. char flag; //如果是管理员,flag = 1;
  82. char name[32];
  83. char passwd[16];
  84. char buf[1024]; //缓冲区,用来保存操作类型的具体内容
  85. }MSG_t;
  86. V1.0版本:
  87. 服务器端功能:
  88. 1、响应客户端查询请求 ========== L int process_list(int acceptfd)
  89. 2、发送文件 ========== G int process_download(int acceptfd, char *filename)
  90. 3、接收文件 ========== P int process_upload(int acceptfd, char *filename)
  91. 客户端:
  92. 1、帮助的功能:
  93. int process_help(void)
  94. 2、list : 查看服务器所在目录的所有文件 ========== L
  95. int process_list(struct sockaddr_in server_addr)
  96. 3、get 文件名 :下载服务器目录的文件 ========== G
  97. int process_download(struct sockaddr_in server_addr, char *filename)
  98. 4、put 文件名 : 上传文件到服务器 ========== P
  99. int process_upload(struct sockaddr_in server_addr, char *filename)
  100. 5、quit : 关闭客户端 ========== Q
  101. 客户端:
  102. int main(int argc, const char *argv[])
  103. {
  104. struct sockaddr_in server_addr;
  105. 填充:
  106. printf("**************************\n");
  107. printf("***请输入 help 查看选项***\n");
  108. printf("**************************\n");
  109. while(1)
  110. {
  111. //可在终端输入需要的内容
  112. printf("input >>> ");
  113. fgets(buf, N, stdin);
  114. buf[strlen(buf) - 1] = '\0';
  115. //在终端输入help可以显示功能
  116. if(strncmp(buf, "help", 4) == 0){
  117. process_help();
  118. }else if(strncmp(buf, "list", 4) == 0){
  119. process_list(server_addr);
  120. }else if(strncmp(buf, "get", 3) == 0) //get filename{
  121. process_download(server_addr, buf + 4);
  122. }
  123. else if(strncmp(buf, "put", 3) == 0){
  124. process_upload(server_addr, buf + 4); //put filename
  125. }else if(strncmp(buf, "quit", 4) == 0){
  126. break;
  127. }else{
  128. printf("Error command.\n");
  129. }
  130. }
  131. return 0;
  132. }
  133. 服务器端:
  134. int main(int argc, const char *argv[])
  135. {
  136. socket
  137. 填充
  138. bind
  139. listen
  140. printf("waiting client connect...\n");
  141. while(1)
  142. {
  143. if((acceptfd = accept(sockfd, NULL, NULL)) < 0)
  144. {
  145. err_log("fail to accept");
  146. }
  147. printf("acceptfd :%d.\n",acceptfd);
  148. recv(acceptfd, buf, N, 0);
  149. switch(buf[0])
  150. {
  151. case 'L':
  152. process_list(acceptfd);
  153. break;
  154. case 'G':
  155. process_download(acceptfd, buf + 2); //G filename
  156. break;
  157. case 'P':
  158. process_upload(acceptfd, buf + 2); //P filenamea
  159. break;
  160. default:
  161. printf("Error command\n");
  162. break;
  163. }
  164. }
  165. return 0;
  166. }
  167. 通信协议和函数接口定好之后,套框架
  168. 5、接口实现
  169. 参考代码:
  170. 6、功能调试
  171. ......

 

 响应速度就是延时的毫秒数,准确性连续运行几个月都不出错。

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/280160
推荐阅读
相关标签
  

闽ICP备14008679号