1 server.go

  1. package main
  2. import (
  3. "fmt"
  4. "net"
  5. "sync"
  6. )
  7. type Server struct {
  8. Ip string
  9. Port int
  10. }
  11. // 创建一个server的指针
  12. func NewServer(ip string, port int) *Server {
  13. server := &Server{
  14. Ip: ip,
  15. Port: port,
  16. }
  17. return server
  18. }
  19. // 启动服务器的接口函数
  20. func (this *Server) Start() {
  21. // 创建一个监听套接字
  22. listener, err := net.Listen("tcp", fmt.Sprintf("%s:%d", this.Ip, this.Port))
  23. if err != nil {
  24. fmt.Println("net.Listen err:", err)
  25. return
  26. }
  27. defer listener.Close()
  28. // 创建新套接字, 处理客户端的请求
  29. for {
  30. conn, err := listener.Accept()
  31. if err != nil {
  32. fmt.Println("listener accept err:", err)
  33. continue
  34. }
  35. go this.Handler(conn)
  36. }
  37. }
  38. // 处理业务
  39. func (this *Server) Handler(conn net.Conn) {
  40. fmt.Println("连接建立成功")
  41. }

2 main.go

  1. package main
  2. func main() {
  3. server := NewServer("127.0.0.1", 8888)
  4. server.Start()
  5. }

3 编绎运行

编绎服务端

go build -o server main.go server.go

运行服务端

./server

模拟客户端向服务端发起连接

nc 127.0.0.1 8888