golang实现聊天室(四)
服务端给已经建立连接的客户端发送消息
client1
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 1\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()
}
client2
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 1\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()
}
server
func main() {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 Receive(c)}
}func 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)c.Write([]byte("123"))}
}
下次目标
服务端建立已连接客户端信息表。