这两天,写的代码可以用混乱来解决,混乱不打紧,要将事情推进,推进,再推进。
实现的服务器程序,也不算太复杂,但是,需要离散,需要并发,需要多线程,需要经验,就变复杂了。
全当练笔,文笔太差,需要多多练习,固有此文。废话少说,下面陈述下:
题目:通过网络向服务器端发送登陆消息,服务器端解析数据包,然后向数据库系统发送sql语句,将登陆消息保存起来。整一个日志系统。
实现思路,分两大线程池,A:接收从客户端发送的数据 B:解析数据包,并发送到数据库
各类功能
线程类:使用Observer模式,本类作为Subject,线程目标类作为Observer,当线程运行时,则一个Update调用,那么目标类的某个函数就在新线程中运行。以成员函数作为线程运行,可以独立一些数据,而线程参数void可作他用。
EPoll封装:也是使用Observer模式,每个Event对应一个Observer,这样,将sock注册进来,再注册一个Observer来接收发送数据。
套接字类:发送,接收,监听,连接等十八般武器。和EPoll类组合使用
主服务类:创建EPoll类、Listener,主要数据接收线程的载体,作为网路数据到应用类的中转站。即,数据从哪来,去往何方,都由它控制
数据处理类:将来自接收线程的数据进行解包,存入数据库(线程B们都在这里)
数据类:数据、状态等都记录在这上面,里面含有套接字类、接收缓冲等,他可以作为主服务器的Observer存在。
在必要的时候,将数据类自己移交到数据处理类,等数据处理类将数据处理完,再移交回来,当数据处理完,则关闭连接,等。
好了,写在这里已经够乱了,希望N天后,自己能看懂自己在说什么。希望自己总结能力能再加强... ...加油