代码分享 —— Linux TCP服务器/客户端程序(link/linker)

代码目录树:

代码分享 —— Linux TCP服务器/客户端程序(link/linker)

    纯C语言编程只需要两个核心文件: link.h  link.c 即可;C++架构的程序需要用到 link.h link.c还有linker.h linker.cpp,后者是在前者的基础上做了封装。

接口的使用如下,TCP创建服务器代码:

代码分享 —— Linux TCP服务器/客户端程序(link/linker)

如果是C语言:

代码分享 —— Linux TCP服务器/客户端程序(link/linker)

C语言链接TCP服务器:

代码分享 —— Linux TCP服务器/客户端程序(link/linker)

核心代码采用epoll监听回调的方式实现,核心代码就是link.h和link.c,基本架构如下:

代码分享 —— Linux TCP服务器/客户端程序(link/linker)

由于TCP是流式数据,因此收到数据后我们通过Parser解析一个完整的报文,比如Json报文,然后link再调用handler回调到用户层,用户处理具体的业务逻辑。

C++接口如下:

代码分享 —— Linux TCP服务器/客户端程序(link/linker)

我们可以继承linker,然后重写packet和handle函数。

C语言接口如下:

代码分享 —— Linux TCP服务器/客户端程序(link/linker)

link_init在最开始调用,link_release在进程退出前调用;link采用id进行管理,要创建一个server或者client,首先需要alloc一个id出来,再进行创建/链接。

代码分享 —— Linux TCP服务器/客户端程序(link/linker)

我们可以创建TCP服务器,也可以创建unix-socket(本地套接字)的服务器。

代码分享 —— Linux TCP服务器/客户端程序(link/linker)

连接的API如上。

代码分享 —— Linux TCP服务器/客户端程序(link/linker)

轮询API有两个,如果你的框架有只要基于TCP/Unix-Socket实现,那么建议调用link_loop_forever;如果你的主框架只是需要一个TCP服务或者客户端,建议定时频繁地调用link_loop。