关于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地址、客户端发送数据是否成功、关闭客户端连接
标签:连接,uv,Libuv,Client,Server,libuv,loop,客户端 来源: https://blog.csdn.net/weixin_44725321/article/details/115333952