Skip to content

这是我用于网络服务器 C 自学这部分的案例

Notifications You must be signed in to change notification settings

dashaomai/CStudy

Repository files navigation

CStudy

======

这是我用于 C 自学的案例。

它们的内容分别是

showip:显示本地 IP 信息

beej:beej 网络教程里公用的代码

conn001:Socket 连接示例 1

stream001:TCP 运用示例 1

datagram001:UDP 运用示例 1

select001:select() 运用示例 1

tinyhttp001:通过 select() 实现了最简单的 Http Server,示例 1

lua001:Lua 虚拟机最简单内嵌示例

st001:基于 state-threads 的简单 Http Server 示例

st002:基于 state-threads 的第二个自侦自联的示例

st003:基于 state-threads 的第三个跨文件自侦听示例

st004:基于 state-threads 的,专用于测试在 FreeBSD 64 位架构下线程内采用变长参数时报错的场景重现

IOCP001/IOCP001:基于 IOCP 的最简单 TCP 示例,只会接收客户端消息并打印在控制台当中。这个示例是从教程里抄下来的。

IOCP001/IOCP002:在前示例的基础上做了调整,修改了数据结构,并完成了 echo 回显的功能。

IOCP001/IOCP003:按自己的理解重新编写了 Echo 服务,重新制订了数据结构,把原来不相关的 PER_SESSION_CONTEXT PER_IO_CONTEXT 关联到一起。

rpc001: 这是作为 rpc 通讯的第一个例子来实现。 它所有代码都在一个 rpc.c 文件内,所使用的数据结构散落在代码内各处,拆包解包的算法也比较原始。 当前主要实现了的功能为: watchdog 启动并构造多个子结点; 子结点之间按内部编号协调各自侦听的端口号; 自动建立各结点之间的 tcp/ip 连接; 在 tcp 流协议上完成粗糙的包截取功能;

rpc002: 这是上一个 rpc001 的合理化后继。 在实现上,开始把不同的功能分别拆分到不同的代码模块内。

rpc003:这个版本接 rpc002 继续调整。和 rpc002 主要不同在于: 通讯方式改为 UDP 数据编码和解码尝试采用 union 方式,减少 memcpy 的消耗 添加注册机制,以便使用 .so 文件内的 c 代码响应 RPC 请求

crash:这是测试因堆栈内变量太多导致溢出错误的最简测试代码

About

这是我用于网络服务器 C 自学这部分的案例

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages