GO簡單的併發伺服器樣例
阿新 • • 發佈:2019-02-15
package main import ( "net" "fmt" "strings" ) func handleConn(conn net.Conn){ defer conn.Close() for { buf:=make([]byte,1024) n,connReadErr:=conn.Read(buf) if connReadErr!=nil { fmt.Println(connReadErr) return } bufStr:=string(buf[:n]) addr:=conn.RemoteAddr().String(); fmt.Printf("addr==%s,buf==%s\n",addr,bufStr) if (string(buf[:n-1])=="exit") { fmt.Printf("addr==%s ===》exit\n",addr)//退出連線請求 return } conn.Write([]byte(strings.ToUpper(bufStr)))//回覆客戶端大寫字元 } } func main() { listener,listenerErr:= net.Listen("tcp","127.0.0.1:8000") if listenerErr!=nil { fmt.Print(listenerErr) } defer listener.Close() for { con,connErr:=listener.Accept(); if connErr!=nil { fmt.Print(connErr) return } go handleConn(con) } }