Ai
1 Star 0 Fork 0

杨程显/empty_zinx

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
Client.go 1.49 KB
一键复制 编辑 原始数据 按行查看 历史
SLAKM 提交于 2023-07-23 14:50 +08:00 . [feat]:zinxV1.0 暂时满足开发需求框架
package main
import (
"empty_zinx/src/znet"
"fmt"
"io"
"net"
"time"
)
// 模拟客户端
func main() {
fmt.Println("client start...")
time.Sleep(1 * time.Second)
//1 直接连接远程服务器,得到一个conn连接
conn, err := net.Dial("tcp", "127.0.0.1:8999")
if err != nil {
fmt.Println("client start err, exit!")
return
}
for {
// 发送封包的消息 MsgID:0
dp := znet.NewDataPack()
msg, err := dp.Pack(znet.NewMessage(0, []byte("ZinxV0.5 client Test Message")))
if err != nil {
fmt.Println("Packet error, exit!", err)
return
}
_, err = conn.Write(msg)
if err != nil {
fmt.Println("Write error, exit!", err)
return
}
// 服务器应该回复我们一个message数据, MsgID:1
binaryHead := make([]byte, dp.GetHeadLen())
if _, err := io.ReadFull(conn, binaryHead); err != nil {
fmt.Println("ReadFull error, exit!", err)
return
}
// 先读取流中的Head部分 得到ID 和 dataLen
msgHead, err := dp.UnPack(binaryHead)
if err != nil {
fmt.Println("UnPack error, exit!", err)
return
}
if msgHead.GetMsgBodyLen() > 0 {
// msg是有数据的
// 再根据DataLen进行第二次读取, 将data读出来
msg := msgHead.(*znet.Message)
msg.SetMsgBody(make([]byte, msg.GetMsgBodyLen()))
if _, err := io.ReadFull(conn, msg.GetMsgBody()); err != nil {
fmt.Println("ReadFull error, exit!", err)
return
}
fmt.Println("recv msg:", string(msg.GetMsgBody()))
}
//cpu阻塞
time.Sleep(1 * time.Second)
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/yang-chengxian/empty_zinx.git
git@gitee.com:yang-chengxian/empty_zinx.git
yang-chengxian
empty_zinx
empty_zinx
v1.0.5

搜索帮助