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);
|
||
}
|
||
} |