关于Libuv_Server_Client笔记

Server

log4x.h log4x.c

​ 初始化log系统:记录日志日期、时间、文件名和行号、log记录的最低级别、屏幕显示日志内容

​ 关闭log系统

​ 记录日志

?stb_sprintf.h

​ 进制转换、符号判断、输出字符转换后的结果

md5.h md5.c

​ MD5算法:

​ 产生出一个128位元(16位元组)的散列值,用于确保信息传输完整一致

​ 输入任意长度的信息,经过处理,输出为128位的信息;

​ 不同的输入得到的不同的结果;

Eg.发送一个电子文档,发送前,我先得到MD5的输出结果a。在对方收到电子文档后,对方也得到一个MD5的输出结果b。如果a与b一样就代表中途未被篡改。

uv.h

libuv中文API手册 http://luohaha.github.io/Chinese-uvbook/

libuv强制使用异步,事件驱动的编程风格。核心工作是提供一个event-loop,还有基于I/O和其它事件通知的回调函数。libuv还提供了一些核心工具,例如定时器,非阻塞的网络支持,异步文件系统访问,子进程等。

1、libuv会负责将来自操作系统的事件收集起来,或者监视其他来源的事件。用户就可以注册回调函数,回调函数会在事件发生的时候被调用。event-loop会一直保持运行状态。

2、event-loop会被uv_run()启动

3、uv_loop_init 初始化loop之前,给其分配相应的内存

uv_loop_close(uv_loop_t *) 关闭loop,回收内存空间

4、uv_default_loop 获取libuv提供的默认loop

5、uv_strerror(int)和uv_err_name(int)分别获取const char *格式的错误信息和错误名字

回调函数:libuv所关注的事件发生后,所调用的函数。应用程序的特定逻辑会在回调函数中实现

6、uv_fs_open()、uv_fs_close()…支持reading/writing file

7、最基础的I/O操作是流stream(uv_stream_t)

TCP:面向连接的,字节流协议,基于libuv的stream实现

server

1.uv_tcp_init 建立tcp句柄
2.uv_tcp_bind 绑定
3.uv_listen 建立监听,当有新的连接到来时,激活调用回调函数
4.uv_accept 接收链接
5.使用stream处理来和客户端通信

client

当你在服务器端完成绑定/监听/接收的操作后,在客户端只要简单地调用uv_tcp_connect

uv_stop() 用来终止event loop

uv_timer_start:定时器启动后的特定时间后,定时器会调用回调函数

uv_timer_set_repeat(uv_timer_t *timer, int64_t repeat);

超时时间timeout作为参数初始化一个定时器,可选参数repeat,定时器能在任何时间被终止

thread_uv.h

对libuv下的线程与锁进行封装;获取libuv错误码对应的错误信息

dumpfile.h

​ 生成程序崩溃时的dump文件(创建文件、生成信息、写入内容)

​ 主程序初始化时加入 DeclareDumpFile()

net_base.h

网络库基本功能函数:

​ 大小端判断
​ 32&64位系统判断
​ ntohll与htonl的实现
​ int32与int64序列/反序列化为char[4],char[8]
​ 数据包头结构定义

packet_sync.h

TCP 数据包封装,依赖libuv、openssl功能:接收数据,解析得到一帧后回调给用户;同步处理,接收到马上解析

​ 根据net_base.h中NetPacket的定义,对数据包进行封装。
​ md5校验码使用openssl函数
​ 同一线程中实时解码

circulebuffer读取packet中data部分;接收到数据,把数据保存在circulebuffer

把数据组合成NetPacket格式的二进制流,可直接发送。

pod_circularbuffer.h

环形缓冲区:支持存储pod数据类型,直接用memcpy连续复制多个数据

​ 获取缓冲区有效数据长度

​ 向缓冲区写入数据,返回实际写入对象

​ 从缓冲区读取数据,返回实际读取的字节数

tcpserver.h tcpserver.cpp

基于libuv封装的tcp服务器,使用log4x作日志工具:包括uv.h的头文件

​ 初始化Server、建立客户端连接、设置响应、设置生存时间、关闭连接、设置端口号、绑定IPv4/IPv6地址

​ 监听端口、删除回收TCP_Handle、获取Client的ID、记录关闭日志信息、设置端口号、接受Client的信息

每次检测GetUVError

server_main.cpp

接受Client发来的数据(是否成功接受)、设置端口号、设置生存时间60s、关闭Client连接

Client

tcpclient.h tcpclient.cpp

基于libuv封装的tcp服务器,使用log4x作日志工具:包括uv.h的头文件

​ 分配客户端发送数据的空间、初始化Client、启动连接、关闭连接、设置生存时间、 建立IPV4/IPV6连接(IP地址,端口号)、是否需要重连Client、记录关闭日志信息、重连计时器、创建线程连接(是否超时)

main.cpp

关闭客户端连接、设置Sever的IP地址、客户端发送数据是否成功、关闭客户端连接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值