一、发送消息,封装消息
public void sendMessageToClient(int type,string id,string content, bool state, string ip)
{
ep= new IPEndPoint(IPAddress.Parse(ip), 59999);
//收发消息格式规定 类型 ID 内容 状态
Message m = new Message();
m.type = type;
m.id = id;
m.content = content;
m.state = state; //按钮按下
byte[] datas= getBytes(m);
client.Send(datas,datas.Length,ep);
}
/// <summary>
/// 将结构体消息封装为字节数组
/// </summary>
/// <returns></returns>
public byte[] getBytes(Message m)
{
MemoryStream ms = new MemoryStream();
BinaryWriter bw = new BinaryWriter(ms);
bw.Write(m.type);
bw.Write(m.id);
bw.Write(m.content);
bw.Write(m.state);
return ms.ToArray();
}
二、接收消息,解析消息
private void receiveMessageFromClient()
{
byte[] datas = new byte[1024];
Mutex mut = new Mutex();
while (true)
{
datas = client.Receive(ref ep);
Message m = getStruct(datas);
//Debug.Log("id==" + m.id+" state=="+m.state);
setFlag(true);
message = m;
}
}
/// <summary>
/// 将字节数组封装为消息结构体
/// </summary>
/// <param name="datas"></param>
/// <returns></returns>
public Message getStruct(byte[] datas)
{
Message m = new Message();
MemoryStream ms = new MemoryStream(datas,0,datas.Length);
BinaryReader br = new BinaryReader(ms);
m.type = br.ReadInt32();
m.id = br.ReadString();
m.content = br.ReadString();
m.state = br.ReadBoolean();
return m;
}
三、消息数据结构
public struct Message
{
public int type; //0:按钮点击事件
public string id; //btn id
public string content;// 消息内容 ,不需要可以为空
public bool state;// true false
}