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出错")
return
}
defer listen.Close()
for{
fmt.Println("等待客户端·连接……")
conn,err :=listen.Accept()
if err!=nil{
fmt.Println("接收出错",err)
continue
}
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,"个字节并退出")
}