diff --git a/bilibili/aceld/IM-System/.gitignore b/bilibili/aceld/IM-System/.gitignore new file mode 100644 index 0000000..9921f7d --- /dev/null +++ b/bilibili/aceld/IM-System/.gitignore @@ -0,0 +1,2 @@ +/server +!.gitignore \ No newline at end of file diff --git a/bilibili/aceld/IM-System/README.md b/bilibili/aceld/IM-System/README.md new file mode 100644 index 0000000..d4316d9 --- /dev/null +++ b/bilibili/aceld/IM-System/README.md @@ -0,0 +1,25 @@ +# golang即时通信系统 + +## 0.1版本 + +基本server构建 + +编译 + +```sh +go build -o server main.go server.go +``` + +启动 + +```sh +./server +``` + +客户端验证(在另一个终端上) + +```sh +nc 127.0.0.1 8888 +``` + +效果:在server端可以看到连接建立成功 diff --git a/bilibili/aceld/IM-System/go.mod b/bilibili/aceld/IM-System/go.mod new file mode 100644 index 0000000..309cab5 --- /dev/null +++ b/bilibili/aceld/IM-System/go.mod @@ -0,0 +1,3 @@ +module IM-System + +go 1.23.0 diff --git a/bilibili/aceld/IM-System/main.go b/bilibili/aceld/IM-System/main.go new file mode 100644 index 0000000..c18d2b8 --- /dev/null +++ b/bilibili/aceld/IM-System/main.go @@ -0,0 +1,6 @@ +package main + +func main() { + server := NewServer("127.0.0.1", 8888) + server.Start() +} diff --git a/bilibili/aceld/IM-System/server.go b/bilibili/aceld/IM-System/server.go new file mode 100644 index 0000000..0e8ac57 --- /dev/null +++ b/bilibili/aceld/IM-System/server.go @@ -0,0 +1,49 @@ +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("连接建立成功") +} + +// 启动服务器的接口 +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) + } + +}