1.服务端监听并处理接收信息
package main import ( "fmt" "io" "net" ) func process(conn net.Conn){ defer conn.Close() for { fmt.Println("服务器的等 待客户端写入……") readByte :=make([]byte,2048) // 注意这里是将数据读取到readByte byte数组中,读取个数为n,并不是上面的2048 n,err :=conn.Read(readByte) if err==io.EOF{ fmt.Println("客户端关闭,服务器关闭") return } if err!=nil{ fmt.Println("服务器的Reader err=",err) return } // 最终获取到的数据, 取数时要注意,是0~n 个不是2048,因为最终读取到的是n readStr :=string(readByte[:n]) fmt.Println("服务器端读取到数据",readStr) } } func main(){ fmt.Println("服务器端开始监听^……") // 服务端监听 8090 listen,err :=net.Listen("tcp","127.0.0.1:8090") if err!=nil{ fmt.Println("监听127.0.0.1:8090出错") } defer listen.Close() for{ fmt.Println("等待客户端·连接……") conn,err :=listen.Accept() if err!=nil{ fmt.Println("接收出错",err) } fmt.Println("客户端连接成功……") fmt.Println(conn) go process(conn) } }
2.客户端连接服务端并发送信息
package main import ( "fmt" "net" ) func main() { // 建立客户端连接 conn,err :=net.Dial("tcp","127.0.0.1:8090") if err !=nil{ fmt.Println("建立连接120.0.0.1:8090出错",err) return // 注意 如果连接失败,这里要失败 } fmt.Println("连接120.0.0.1:8090成功!",err) defer conn.Close() // 发送信息 whriteStr :="hello word,你好!" // 通过conn连接发送信息 n,err :=conn.Write([]byte(whriteStr)) if err!=nil{ fmt.Println("conn whrite err=",err) } fmt.Println("客户端发送了",n,"个字节并退出") }