go協程聊天室
阿新 • • 發佈:2020-12-26
服務端:
package main import ( "fmt" "net" ) func process(conn net.Conn){ defer conn.Close(); for { fmt.Printf("伺服器在等待客戶端%s輸入資訊",conn.RemoteAddr().String()); buf:=make([]byte,1024); n,err:=conn.Read(buf);//如果沒有發信息一致等著 if err !=nil { return; fmt.Println("error"); } content:=string(buf[:n]); fmt.Print(content); } } func main(){ fmt.Println("伺服器啟動...."); listen,err:=net.Listen("tcp","0.0.0.0:8888"); if err != nil { fmt.Println("listen err=",err); } defer listen.Close(); for{ fmt.Println("等待客戶端來進行連線..."); conn,err:= listen.Accept(); if err != nil { fmt.Println("conn is error"); ipaddr:=conn.RemoteAddr().String(); fmt.Printf("accept() suc con =%v",ipaddr); } go process(conn); } }
客戶端:
package main import ("bufio" "fmt" "net" "os" ) func main(){ conn,err:=net.Dial("tcp","127.0.0.1:8888"); if err!= nil { fmt.Println("client dial err",err); return; } //給客戶端傳送資料 reader:=bufio.NewReader(os.Stdin);//代表標準輸入 content,err:=reader.ReadString('\n'); if err != nil { fmt.Printf("read is error"); } n,err:=conn.Write([]byte(content)); if err !=nil { fmt.Println("send is error"); } fmt.Println(n); }