Go 网络库:go link
jopen
10年前
link 是简单的 GO 网络库,专注于基于数据包的持久连接通讯。link 提供一个数据包分割协议,比如 Erlang 默认的 {packet: N}
,同时还支持自定义数据包分割协议。但是 link 不会限制编码或者解码格式的请求和应答。这个库还提供会话管理和播放功能。
Choose a protocol for your project.
proto := link.PacketN(2, binary.BigEndian)
Setup a server on port 8080
and set protocol.
server, _ := link.Listen("tcp", "0.0.0.0:8080", proto)
Handle incoming connections. And setup a message handler on the new session.
server.AcceptLoop(func(session *Session) { fmt.Println("session start") session.ReadLoop(func(session *Session, msg []byte) { fmt.Printf("new message: %s\n", msg) }) fmt.Println("session closed") })
Use the same protocol dial to the server.
proto := link.PacketN(2, binary.BigEndian) client, _ := link.Dial("tcp", "127.0.0.1:8080", proto)
Send a message to server.
client.Send(link.Binary("Hello World!"))