golang实现聊天室(三)
实现多个客户端同时给服务端发送消息,服务端接受并打印出来
client1
func main() {
var conn, err = net.DialTimeout("tcp", "127.0.0.1:5888", 30*time.Second)
if err != nil {
log.Fatal("conn error")
}
for {
conn.Write([]byte("user 2"))
time.Sleep(3 * time.Second)
}
conn.Close()
}
client2
func main() {
var conn, err = net.DialTimeout("tcp", "127.0.0.1:5888", 30*time.Second)
if err != nil {
log.Fatal("conn error")
}
for {
conn.Write([]byte("user 1\n "))
time.Sleep(2 * time.Second)
}
conn.Close()
}
server
func main() {
var conn, err = net.Listen("tcp","127.0.0.1:5888")
if err != nil {
return
}
for {
c, err := conn.Accept()
if err != nil {
return
}
go Receive(c)
}
}
func Receive(c net.Conn) {
for {
byte := make([]byte, 256)
lens, err := c.Read(byte)
if err != nil {
log.Fatal("Receive error")
}
byte = byte[:lens]
fmt.Printf("%s\n", byte)
}
}
下次目标
广播指定消息发送给客户端