This is a creation in Article, where the information may have evolved or changed.
Go Language network programming, start with the chat room first:
/** * Created by Vicky.H on 13-12-6. * eclipser@163.com */package Mainimport ("FMT" "Net" "StrConv" "bytes" _ "Bufio" _ "strings") var m map[string]*net. Connfunc Main () {m = Make (map[string]*net. Conn, listener, err: = Net. Listen ("TCP", ": 8080") if err! = Nil {fmt. Errorf (Err. Error ()) Return}defer listener. Close () Index: = 0for {conn, err: = Listener. Accept () if err! = Nil {fmt. Errorf (Err. Error ()) Return}name: = "User:" + StrConv. Itoa (Index) defer Connclosehandler (name, conn) M[name] = &connindex++go Connhandler (name, conn)}}func Connclosehandler (name string, conn net. Conn) {Conn. Close () Delete (m, name) for key: = Range (m) {if key! = name {(* (M[key]). Write (bytes. Newbufferstring (name + "Leave room \ n"). Bytes ()) (* (M[key])). Write (bytes. Newbufferstring ("Current room Number:" + StrConv. Itoa (Len (m)) + "\ n"). Bytes ())}}}func Connhandler (name string, conn net. Conn) {Conn. Write (bytes. Newbufferstring ("Current room Number:" + StrConv. Itoa (Len (m)) + "\ n"). Bytes ()) for key: = Range (m) {if key! = name {(* (M[key])). Write (bytes. NewbufferstrinG (name + "Enter room \ n"). Bytes ())}}for {buf: = make ([]byte,1024) Conn. Read (BUF) Msg: = String (BUF) Conn. Write (bytes. Newbufferstring ("I said:" + msg). Bytes ()) for key: = Range (m) {if key! = name {(* (M[key])). Write (bytes. Newbufferstring (name + "say:" + msg). Bytes ())}}}}
Run: Go run main.go
Test results