服务端:
package main
import (
"fmt"
"net"
)
func DoHandler(conn net.Conn) {
defer conn.Close()
//读取数据
fmt.Println("开始读取数据")
b := make([]byte, 1024)
for {
n, err := conn.Read(b)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println(conn.RemoteAddr().String() + ": 读到的数据为" + string(b[:n]))
}
}
func main() {
listen, err := net.Listen("tcp", ":8000")
if err != nil {
fmt.Println(err.Error())
return
}
defer listen.Close()
//循环
for {
//阻塞等待客户端连接
conn, err := listen.Accept()
if err != nil {
fmt.Println(err.Error())
return
}
//创建协程处理逻辑
go DoHandler(conn)
}
}
客户端:
package main
import (
"fmt"
"net"
"os"
)
func main() {
//创建客户端
listen, err := net.Dial("tcp", ":8000")
if err != nil {
fmt.Println(err.Error())
return
}
defer listen.Close()
go func() {
//获取重建盘输入的数据
str := make([]byte, 2048)
for {
n, err := os.Stdin.Read(str)
if err != nil {
fmt.Println(err.Error())
}
//发送到服务端
_, err1 := listen.Write(str[:n])
if err1 != nil {
fmt.Println(err.Error())
}
}
}()
buf := make([]byte, 2048)
for {
//读取数据
n, err := listen.Read(buf)
if err != nil {
fmt.Println(err.Error())
}
fmt.Println("读到的数据:" + string(buf[:n]))
}
}