本文共 2065 字,大约阅读时间需要 6 分钟。
完成服务端广播消息
package mainimport ( "fmt" "log" "math/rand" "net")type Client_list struct { list map[net.Conn]string}func main() { client_list := Client_list{make(map[net.Conn]string, 0)} var conn, err = net.Listen("tcp","127.0.0.1:6888") if err != nil { return } for { c, err := conn.Accept() if err != nil { return } go client_list.Receive(c) }}//noinspection GoUnresolvedReferencefunc (client_list *Client_list) Receive(c net.Conn) { for { reveive_byte := make([]byte, 256) lens, err := c.Read(reveive_byte) if err != nil { log.Fatal("Receive error") } reveive_byte = reveive_byte[:lens] fmt.Printf("%s\n", reveive_byte) client_list.BroadMessage(c) }}func (client_list *Client_list) BroadMessage(c net.Conn) { // 用户信息唯一表,唯一标识码 user := rand.Int() % 2 client_list.list[c] = string(user) // 遍历map表 for clientKey, _ := range client_list.list{ if clientKey == c { continue } var _, err = clientKey.Write([]byte("服务器广播消息")) if err != nil { log.Fatal("Wrong about abroad message") } }}
package mainimport ( "fmt" "log" "net" "time")func main() { var conn, err = net.DialTimeout("tcp", "127.0.0.1:6888", 30*time.Second) if err != nil { log.Fatal("conn error") } for { conn.Write([]byte("user 2\n ")) time.Sleep(5 * time.Second) re_message := make([]byte, 255) length, err := conn.Read(re_message) if err != nil { return } re_message = re_message[:length] fmt.Printf("%s\n", re_message) } conn.Close()}
package mainimport ( "fmt" "log" "net" "time")func main() { var conn, err = net.DialTimeout("tcp", "127.0.0.1:6888", 30*time.Second) if err != nil { log.Fatal("conn error") } for { conn.Write([]byte("user 2\n ")) time.Sleep(5 * time.Second) re_message := make([]byte, 255) length, err := conn.Read(re_message) if err != nil { return } re_message = re_message[:length] fmt.Printf("%s\n", re_message) } conn.Close()}
转载地址:http://gkorb.baihongyu.com/