58 lines
1.2 KiB
C#
58 lines
1.2 KiB
C#
|
using System;
|
|||
|
using System.IO;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
public class BinaryMessage : IDisposable
|
|||
|
{
|
|||
|
private readonly MemoryStream _stream;
|
|||
|
private readonly BinaryWriter _writer;
|
|||
|
|
|||
|
public BinaryMessage(int sysId, int cmdId)
|
|||
|
{
|
|||
|
_stream = new MemoryStream();
|
|||
|
_writer = new BinaryWriter(_stream);
|
|||
|
_writer.Write((byte)sysId);
|
|||
|
_writer.Write((byte)cmdId);
|
|||
|
}
|
|||
|
|
|||
|
public void Dispose()
|
|||
|
{
|
|||
|
_writer.Close();
|
|||
|
_stream.Dispose();
|
|||
|
}
|
|||
|
|
|||
|
public void Send()
|
|||
|
{
|
|||
|
BinaryMessageHandle.PacketSend(_stream, _writer);
|
|||
|
Dispose();
|
|||
|
}
|
|||
|
|
|||
|
// 注:Lua只有个number,没得Byte,Short之分,所以Number类只能用函数名区分
|
|||
|
public void WriteByte(byte data)
|
|||
|
{
|
|||
|
_writer.Write(data);
|
|||
|
}
|
|||
|
|
|||
|
public void WriteShort(short data)
|
|||
|
{
|
|||
|
_writer.Write(data);
|
|||
|
}
|
|||
|
|
|||
|
public void WriteInt(int data)
|
|||
|
{
|
|||
|
_writer.Write(data);
|
|||
|
}
|
|||
|
|
|||
|
public void WriteLong(long data)
|
|||
|
{
|
|||
|
_writer.Write(data);
|
|||
|
}
|
|||
|
|
|||
|
public void WriteString(string data)
|
|||
|
{
|
|||
|
var bytes = System.Text.Encoding.UTF8.GetBytes(data);
|
|||
|
_writer.Write((short)bytes.Length);
|
|||
|
_writer.Write(bytes);
|
|||
|
_writer.Write((byte)0);
|
|||
|
}
|
|||
|
}
|