[Go] 轻量服务器框架基础TCP服务模块
框架要先把整体的结构定义好,一般都是在$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() }
十年开发经验程序员,离职全心创业中,历时三年开发出的产品《唯一客服系统》
一款基于Golang+Vue开发的在线客服系统,软件著作权编号:2021SR1462600。一套可私有化部署的网站在线客服系统,编译后的二进制文件可直接使用无需搭开发环境,下载zip解压即可,仅依赖MySQL数据库,是一个开箱即用的全渠道在线客服系统,致力于帮助广大开发者/公司快速部署整合私有化客服功能。
开源地址:唯一客服(开源学习版)
官网地址:唯一客服官网