[Go] 轻量服务器框架基础TCP服务模块
2023-02-18 15:41:11 时间
框架要先把整体的结构定义好,一般都是在$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() }
相关文章
- ARM嵌入式跟踪缓冲器技术参考手册
- MongoDB(4)- MongoDB与Python的交互
- MongoDB(3)- 数据的导入导出
- MongoDB(2)- MongoDB的基本操作
- MongoDB(1)- MongoDB数据库介绍与安装
- Linux(六):系统运维常用命令
- Linux(五):Linux的文档编辑器Vi
- Linux(四):Linux的打包和压缩详解
- Linux(三):Linux的目录及相关作用
- Linux(二):Linux的灵魂
- Linux(一):Linux操作系统
- Linux环境下安装配置Mysql
- (一)Git——安装与初始化
- (二)Git——基本操作
- (三)Git——分支
- (四)Git——团队协作
- Git——从入门到入云
- Linux嵌入式开发——shell命令
- Linux环境下接口调试利器:cURL
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)