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

目录

一、项目概要

二、环境搭建

三、需求分析


一、项目概要

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

 

二、环境搭建

安装必要的库

 

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

 

三、需求分析

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

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

之后是功能的概述,

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

 

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

 

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


1、ftp服务器功能展示

服务器端:								客户端:
$ ./server  192.168.1.200 5001          $ ./client  192.168.1.200 5001
server sockfd :3.                       **************************
waiting client connect...               ***请输入 help 查看选项***
acceptfd :4.                            **************************
目录清单已经成功发送                    input >>> help
acceptfd :4.                            *****************************************
文件传送完成                            ***输入/功能*****************************
acceptfd :4.                            ***list : 查看服务器所在目录的所有文件***
接收文件成功                            ***get 文件名 : 下载服务器目录的文件****
                                        ***put 文件名 : 上传文件到服务器********
                                        ***quit : 关闭客户端*********************
                                        *****************************************
                                        input >>> list
                                        ***hello.c
                                        ***world.c
                                        ***src
                                        ***server
                                        ***linux.c
                                        ***testfile
                                        服务器目录已经接收完毕
                                        input >>> get world.c
                                        下载完毕
                                        input >>> put readme.txt
                                        上传完毕
                                        input >>> quit


fengjunhui@ubuntu:~/www.makeru.com.cn/ftpserver/testfile$ diff ../world.c world.c 
fengjunhui@ubuntu:~/www.makeru.com.cn/ftpserver/testfile$ diff ../readme.txt readme.txt 


2、需求拆解  ========== 头脑风暴
需要服务器和客户端:==========>CS模型:

框架选择:
	TCP通信
	UDP通信
	广播通信
	组播通信

并发需求: 
	并发的支持数量: 
		不常用的并发:
			多进程---多线程
		常用的并发
			select    <1024
			poll 	  之间 
			epoll     百万级别     

V1.0版本:			
服务器端功能: 
1、响应客户端的请求
2、发送文件
3、接收文件

客户端: 
 1、帮助的功能:
 2、list : 查看服务器所在目录的所有文件 
 3、get 文件名 :下载服务器目录的文件 
 4、put 文件名 : 上传文件到服务器 
 5、quit : 关闭客户端 

V2.0版本: ==== 增加的功能
1、支持规模为1000以下的用户并发量
2、服务器端支持对客户端用户权限的管理,并设置管理员的功能
3、可以显示客户端当前的文件列表
4、每个客户端访问的日期信息要显示在服务器上

V3.0版本: ==== 增加的功能
1、增加会员与非会员的区别
2、上传或下载的功能要采用多进程或多线程的方式实现
3、可以根据是否是会员来适当的提升下载速度
4、支持断点续传的功能
5、支持图片文件的传输

V4.0版本: ==== 增加的功能
1、增加音频的传输功能
2、增加视频的编解码和传输功能
3、改进算法并提供扩展接口
......

没界面,哈哈,不过这就是C语言的魅力,所以大家在掌握C之后需要扩展一门高级语言,为以后打下良好的基础


3、框架选择
	TCP通信,暂时不需要支持并发
	
	参考PPT


4、协议接口制定
	
一般情况下的通信结构体封装:
//
typedef struct msgbuf{
	char type;  //服务或功能的类型
	char flag;  //如果是管理员,flag = 1;
	char name[32];
	char passwd[16];
	char buf[1024]; //缓冲区,用来保存操作类型的具体内容
}MSG_t;

	
V1.0版本:			
服务器端功能: 
1、响应客户端查询请求	========== L   int process_list(int acceptfd)
2、发送文件				========== G   int process_download(int acceptfd, char *filename)
3、接收文件				========== P   int process_upload(int acceptfd, char *filename)

客户端: 
 1、帮助的功能:	
					int process_help(void)
 2、list : 查看服务器所在目录的所有文件   ========== L  
					int process_list(struct sockaddr_in server_addr)
 3、get 文件名 :下载服务器目录的文件 	  ========== G
					int process_download(struct sockaddr_in server_addr, char *filename)
 4、put 文件名 : 上传文件到服务器 		  ========== P   
					int process_upload(struct sockaddr_in server_addr, char *filename)
 5、quit : 关闭客户端 					  ========== Q  
					

					

	
客户端: 
int main(int argc, const char *argv[])
{
	struct sockaddr_in server_addr;
	填充: 
	printf("**************************\n");
	printf("***请输入 help 查看选项***\n");
	printf("**************************\n");
	while(1)
	{
		//可在终端输入需要的内容
		printf("input >>> ");
		fgets(buf, N, stdin);
		buf[strlen(buf) - 1] = '\0';
		//在终端输入help可以显示功能
		if(strncmp(buf, "help", 4) == 0){
			process_help();
		}else if(strncmp(buf, "list", 4) == 0){
			process_list(server_addr);
		}else if(strncmp(buf, "get", 3) == 0) //get filename{
			process_download(server_addr, buf + 4);
		}
		else if(strncmp(buf, "put", 3) == 0){
			process_upload(server_addr, buf + 4); //put filename
		}else if(strncmp(buf, "quit", 4) == 0){
			break;
		}else{
			printf("Error command.\n");
		}
	}
	return 0;
}

	
	
服务器端: 	
int main(int argc, const char *argv[])
{
	socket
	填充
	bind
	listen
	printf("waiting client connect...\n");
	while(1)
	{ 
		if((acceptfd = accept(sockfd, NULL, NULL)) < 0)
		{
			err_log("fail to accept");
		}
		printf("acceptfd :%d.\n",acceptfd);
		recv(acceptfd, buf, N, 0);
		switch(buf[0])
		{
			case 'L':
				process_list(acceptfd);
				break;
			case 'G':
				process_download(acceptfd, buf + 2); //G filename
				break;
			case 'P':
				process_upload(acceptfd, buf + 2); //P filenamea
				break;
			default:
				printf("Error command\n");
				break;
		}
	}

	return 0;
}


通信协议和函数接口定好之后,套框架


5、接口实现
	参考代码:
		


6、功能调试
	......

 

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

 

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宇努力学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值