内容摘要:复制funcListenAndServe(addressstring){ //绑定监听地址 listener,err:=net.Listen("tcp",a

复制func ListenAndServe(address string) { // 绑定监听地址 listener,徒手 err := net.Listen("tcp", address) if err != nil { log.Fatal(fmt.Sprintf("listen err: %v", err)) } defer listener.Close() log.Println(fmt.Sprintf("bind: %s, start listening...", address)) for { // Accept 会一直阻塞直到有新的连接建立或者listen中断才会返回 conn, err := listener.Accept() if err != nil { // 通常是由于listener被关闭无法继续监听导致的错误 log.Fatal(fmt.Sprintf("accept err: %v", err)) } // 开启新的
服务器租用 goroutine 处理该连接 go Handle(conn) } } func Handle(conn net.Conn) { reader := bufio.NewReader(conn) for { // ReadString 会一直阻塞直到遇到分隔符 \n // 遇到分隔符后 ReadString 会返回上次遇到分隔符到现在收到的所有数据 // 若在遇到分隔符之前发生异常, ReadString 会返回已收到的数据和错误信息 msg, err := reader.ReadString(\n) if err != nil { // 通常遇到的
站群服务器错误是连接中断或被关闭,用io.EOF表示 if err == io.EOF { log.Println("connection close") } else { log.Println(err) } return } b := []byte(msg) // 将收到的
亿华云服务
信息发送给客户端 conn.Write(b) } } func main() { ListenAndServe(":8000") } 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.