}
}()
/*
从chan 里读出给这个客户端的数据 然后写到该客户端里
*/
go func() {
for {
talkString := <-talkChan[curUid]
_, err = conn.Write([]byte(talkString))
if err != nil {
closed <- true
}
}
}()
/*
检查是否已经关闭连接 如果关闭则推出该线程 去执行defer语句
*/
for {
if <-closed {
return
}
}
}
func main() {
/**
建立监听链接
*/
ln, err := net.Listen("tcp", "127.0.0.1:6010")
if err != nil {
panic(err)
}
//创建一个管道
//talkChan := map[f]
talkChan := make(map[int]chan string)
fmt.Printf("%pn", talkChan)
/*
监听是否有客户端过来的连接请求
*/
for {
fmt.Println("wait connect...")
conn, err := ln.Accept()
if err != nil {
log.Fatal("get client connection error: ", err)
}
go handleConnection(conn, talkChan)
}
}
客户端测试代码:client.go
package main
import (
"fmt"
"math/rand"
"net"
)
func main() {
conn, err := net.Dial("tcp", "127.0.0.1:6010")
if err != nil {
panic(err)
}
fmt.Fprintf(conn, "hello servern")










