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"))
}
}
下次目标
服务端建立已连接客户端信息表。