文章目录
- 一、端口采用80
- 二、服务端的基本流程
-
- 1.初始化
- 2.等待客户端的连接
- 3.客户端连接上来,fork一个子进程,父进程关闭通信socket,并回到Accept继续监听
- 4.进入子进程的流程
- 5.子进程关闭监听的socket
- 6.进入业务处理进程主函数(子进程处理业务)
-
- 6.1 读取客户端的业务请求报文
- 6.2 将参数解析出来
- 三、新用户第一次运行所需的业务
-
- 1.新用户业务处理流程
-
- (1)操作用户基本信息表
- (2)操作全国站点基本信息表
- (3)操作用户使用日志表
- (4)操作数据库的注意事项
- 四、同义词的妙用
- 五、解析不同的业务报文
- 六、接收到非法的业务代码处理方法
- 七、短连接还是长连接
一、端口采用80
??当系统正式运行的时候,一般采用80端口,这个端口是HTTP服务的端口,但是不一定说是采用HTTP协议。如果用其他的端口。一般用户都会开放80端口,如果80端口都不开放,意味着外网都上不了。
二、服务端的基本流程
1.初始化
??
2.等待客户端的连接
3.客户端连接上来,fork一个子进程,父进程关闭通信socket,并回到Accept继续监听
4.进入子进程的流程
5.子进程关闭监听的socket
6.进入业务处理进程主函数(子进程处理业务)
??就是客户端给服务端发送业务代码,服务端解析业务代码,然后去处理对应的业务。我们不做真正的客户端程序,我们只是利用tcp协议,模拟一个客户端给服务端发送业务代码。
??每增加一种业务,我们只需要添加业务的处理函数就行了。(其实我觉得这里可以用设计模式了)
6.1 读取客户端的业务请求报文
??如果返回false,认为是客户端退出或网络原因,不写错误日志
2)注意一个事项:当将用户的信息插入表中,出现主键冲突时,服务端的是不去处理的。为什么会出现主键冲突呢,因为用户下载了软件之后,使用了一段时间将软件删除了,然后又将软件下载回来了。
上面的信息解析出来之后,暂时放入一个结构体中。
??连接数据库的操作是在子进程里面完成的, 我们在主函数中传参。如果在主函数中连接数据库是会产生冲突的。
那为什么不定义为局部变量呢,如果定义为局部变量如果程序是用exit退出,那么子进程的数据库连接对象得不到释放。(在资源释放问题里面解释有)
四、同义词的妙用
??这样创建同义词之后,如果某个用户想用到另一个用户的表的时候,写程序时,不用加上前缀。
??还有一个好处就是,当这个创建了同义词的表,前移到别的用户的时候,程序也不用修改。
六、接收到非法的业务代码处理方法
??这个怎么处理呢,如果接收到了非法的业务代码,就是不再业务范围内。
??如果接收到非法的业务代码,服务端就不继续等待了。 在天气软件中服务端是部署在互联网上的,是有公网ip的,这就意味着会有很多系统来攻击我们。
如果报文格式不符合要求的话,就直接return。
??如果是规定的报文范围内,会继续等待。
七、短连接还是长连接
这是由客户端安排的。
文章知识点与官方知识档案匹配,可进一步学习相关知识网络技能树首页概览22076 人正在系统学习中
来源:行孤、
声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!