项目简介
这是一个基于Go语言的网络库oud,采用多线程和事件驱动的设计模式。主要目标是提供一个易用且高效的TCP网络编程库,帮助开发者快速构建高并发网络应用。该库基于muduo模型,实现了Reactor模型,使用epoll进行IO多路复用。
项目的主要特性和功能
- 多线程和事件驱动:能高效处理高并发连接。
- epoll IO多路复用:可处理大量网络连接。
- 回调函数:通过回调函数处理连接建立、断开、消息接收等事件,方便定制业务逻辑。
- 异步编程:适应复杂多变的场景和需求。
- 简单的API:接口简单明了,便于开发者快速上手。
安装使用步骤
1. 获取oud库
bash
2. 示例代码
以下是一个简单的TCP回声服务器的示例代码: ```go package main
import ( "fmt" "syscall" )
func main() { loop := oud.NewEventLoop() addr := &syscall.SockaddrInet4{Port: 12345} server := oud.NewTCPServer(loop, addr, "server name") server.SetConnectionCallback(onConnection) server.SetMessageCallback(onMessage)
server.Start()
loop.Loop()
}
func onConnection(conn *oud.TCPConnection) { if conn.Connected() { fmt.Printf("%s is connected\n", conn.Name()) } }
func onMessage(conn oud.TCPConnection, buf oud.Buffer) { data := buf.ReadSlice() fmt.Printf("%s recive %d bytes in:%d\n", conn.Name(), len(data), conn.FD()) conn.Send(data) buf.Retrieve(len(data)) } ```
3. 运行示例代码
编译并运行示例代码,将启动一个监听在12345端口的TCP回声服务器。
注意事项
- 此项目仅适用于Linux系统,因为使用了epoll进行IO多路复用。
- 这是一个基于Go语言的网络库,需在Go环境下运行。
- 该库目前处于开发阶段,部分功能尚未完善,如定时器、空闲连接清除、keep-alive等。
- 示例代码和测试代码仅为演示目的,可能需根据实际需求修改和扩展。
- 尚未进行完整的单元测试和功能测试,且缺少文档和示例程序演示功能。
- 在并发环境下使用时,需特别注意数据的同步和冲突处理,以避免潜在问题和风险。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】