[Go] 轻量服务器框架基础TCP服务模块
程序员文章站
2023-09-28 23:04:42
框架要先把整体的结构定义好,一般都是在$GOPATH目录的src下建立自己的目录 zinterface是一些接口的定义 znet就是接口的具体实现 IServer.go server.go一个tcp服务端的基本业务,简单的原样回显 单独在src下创建测试目录 server.go ......
框架要先把整体的结构定义好,一般都是在$gopath目录的src下建立自己的目录
zinterface是一些接口的定义
znet就是接口的具体实现
iserver.go
package zinterface type iserver interface{ start() stop() server() }
server.go一个tcp服务端的基本业务,简单的原样回显
package znet import ( "fmt" "log" "net" "zinx/zinterface" ) type server struct { name string ip string ipversion string port int } func (s *server) start() { log.printf("%s %s:%d start...\n", s.name, s.ip, s.port) addr, err := net.resolvetcpaddr(s.ipversion, fmt.sprintf("%s:%d", s.ip, s.port)) if err != nil { log.println("resolve tcp addr err ", err) return } listener, err := net.listentcp(s.ipversion, addr) if err != nil { log.println("listen tcp err ", err) return } go func() { for { conn, err := listener.accepttcp() if err != nil { log.println("accept tcp err ", err) continue } go func() { for { b := make([]byte, 512) len, err := conn.read(b) if err != nil { log.println("read tcp err ", err) continue } if _, err := conn.write(b[:len]); err != nil { log.println("write tcp err ", err) continue } } }() } }() } func (s *server) stop() { } func (s *server) server() { s.start() select{} } func newserver(name string) zinterface.iserver { s := &server{ name: name, ip: "0.0.0.0", ipversion: "tcp4", port: 8999, } return s }
单独在src下创建测试目录
server.go
package main import ( "zinx/znet" ) func main() { server:=znet.newserver("[zinx]") server.server() }
上一篇: vue-其他
下一篇: 用Python写一个游戏脚本,你会吗?