go系列(五)即时通信系统案例

0.1版本:基础server构建

新建一个文件夹,名字叫project_tongxin,在project_tongxin文件夹里面新建两个go文件,分别叫做main.go和server.go
server.go代码:

package main
import(
    "fmt"
    "net"
)
type Server struct{
	IP string
	Port int
}

// 创建一个server的接口
func NewServer(ip string, port int) *Server{
	server := &Server{
		IP: ip,
		Port: port,
	}
	return server
}

func (this *Server) Handler(conn net.Conn){
    //... 当前链接的业务
    fmt.Println("链接建立成功")
    
}

//启动服务器的接口
//Server的成员函数
func (this *Server) Start(){
	// socket listen
	listener, err := net.Listen("tcp", fmt.Sprintf("%s:%d", this.IP, this.Port))
	if err != nil{
		fmt.Println("net.Listen err: ", err)
		return 
	}
	// close listen socket
	defer listener.Close()

	for{
		// accept
		conn, err := listener.Accept()
		if err != nil{
			fmt.Println("listener accept err: ", err)
			continue
		}
		//do handler
        go this.Handler(conn)
	}
}

main.go代码:

package main


func main(){
	server := NewServer("127.0.0.1", 22221)
	server.Start()
}

启动命令:
go run main.go server.go

运行结果:
在浏览器上输入127.0.0.1:22221,则在go的终端上能看到输出:
在这里插入图片描述


参考:
https://www.bilibili.com/video/BV1gf4y1r79E?p=38&vd_source=c29cd407b49283eb7b9dd225b12c4066

你可能感兴趣的:(go,golang,开发语言,后端)