3.1 请参考下面的文章
看完这篇文章你基本就能够在客户端使用protobuf
3.2 使用UDP协议发送byte流
使用的protobuf模型:
syntax = "proto3"; // proto协议版本
message Player{
int32 id = 1;//同上
int32 hp = 2;//必须字段,在后面的使用中必须为该段设置值
int32 skill = 3;//可选字段,在后面的使用中可以自由决定是否为该字段设置值
}
客户端代码:
using Google.Protobuf;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using UnityEngine;
public class Client : MonoBehaviour
{
private IPEndPoint point;
private UdpClient client;
int rd;
bool endClient { get; set; }
public string IP { get; set; }
void Awake()
{
rd = UnityEngine.Random.Range(0, 30000);//随机绑定端口,支持多开
}
private void Start()
{
begin();
}
public void begin()
{
if (client == null)
{
IP = "127.0.0.1";
//重新填写ip,
point = new IPEndPoint(IPAddress.Parse(IP), 9002);
client = new UdpClient(new IPEndPoint(IPAddress.Any, rd + 10000));
client.Connect(point);
Player reqMsg = new Player();
reqMsg.Id = 33;
reqMsg.Hp = 100;
reqMsg.Skill = 191;
byte[] datas = reqMsg.ToByteArray(); // 把对象转换为字节数组
client.Send(datas, datas.Length);//发送数据
}
}
private void OnApplicationQuit()
{
endClient = true;
if (client == null)
return;
client.Close();
}
}
接收代码:
结果显示:
数据正确:非常完美