server端:
package main
import (
"fmt"
"net"
"strings"
)
func main() {
//创建服务
listener, err := net.Listen("tcp", ":8088")
if err != nil {
fmt.Println("服务建立异常:", err)
return
}
for true {
fmt.Println("监听中")
//监听连接
conn, err := listener.Accept()
if err != nil {
fmt.Println("连接异常:", err)
return
}
fmt.Println("连接建立成功")
go handleData(conn)
}
}
//业务处理
func handleData(conn net.Conn) {
//初始化一个字节切片
buf := make([]byte, 1024)
//循环处理数据
for true {
//接收数据
cnt, err := conn.Read(buf)
if err != nil {
fmt.Println("接收数据异常:", err)
return
}
fmt.Println("client===>server接收数据,长度:",cnt,"数据内容:",string(buf[:cnt]))
//数据处理-->转为大写
upper := strings.ToUpper(string(buf))
//处理好的数据进行发送
cnt, err = conn.Write([]byte(upper))
if err != nil {
fmt.Println("数据发送失败",err)
return
}
fmt.Println("server===>client发送数据,长度:",cnt,"数据内容:",upper)
}
}
clinet端:
package main
import (
"fmt"
"net"
"time"
)
func main() {
//建立连接
conn, err := net.Dial("tcp", ":8088")
if err != nil {
fmt.Println("建立失败", err)
return
}
fmt.Println("连接成功")
for true {
go handleClientData(conn)
time.Sleep(time.Second * 2)
}
}
func handleClientData(conn net.Conn) {
//初始化字节数组
data := []byte("你好世界")
//创建一个字节切片用来存储从server发送过来的数据
buf := make([]byte, 1024)
//发送数据到server端
cnt, err := conn.Write(data)
if err != nil {
fmt.Println("数据发送失败", err)
}
fmt.Println("client===>server发送数据,长度为:", cnt, "内容为:", string(data))
//从server接收数据
cnt, err = conn.Read(buf)
if err != nil {
fmt.Println("数据接收失败", err)
}
fmt.Println("server===>client接收数据,长度为:", cnt, "内容为:", string(buf[:cnt]))
}
server端输出结果
监听中
连接建立成功
监听中
client===>server接收数据,长度: 12 数据内容: 你好世界
server===>client发送数据,长度: 1024 数据内容: 你好世界
client===>server接收数据,长度: 12 数据内容: 你好世界
server===>client发送数据,长度: 1024 数据内容: 你好世界
client端输出结果
连接成功
client===>server发送数据,长度为: 12 内容为: 你好世界
server===>client接收数据,长度为: 1024 内容为: 你好世界
client===>server发送数据,长度为: 12 内容为: 你好世界
server===>client接收数据,长度为: 1024 内容为: 你好世界