private void ReceiveBytesEvent(IBlockBuffer <byte> receiveBuffer) { if (OnReceiveBytes != null) { OnReceiveBytes(receiveBuffer); } }
public void Dispose() { Disconnect(); SendBuffer.Dispose(); SendBuffer = null; ReceiveBuffer.Dispose(); ReceiveBuffer = null; }
public void Pack(byte[] message, IBlockBuffer <byte> sendBuffer) { //消息头,假设用int标识,4字节 int length = message.Length; byte[] lengthBytes = BitConverter.GetBytes(length); sendBuffer.WriteAtEnd(lengthBytes); sendBuffer.WriteAtEnd(message); }
public void Unpack(IBlockBuffer <byte> receiveBuffer, ref byte[] message) { var length = receiveBuffer.Index; if (length > 0) { message = receiveBuffer.ReadFromHead(length); } }
public void Unpack(IBlockBuffer <byte> receiveBuffer, ref byte[] message) { //消息头,假设用int标识,4字节 if (receiveBuffer.Index >= 4) { byte[] lengthBytes = receiveBuffer.TryReadFromHead(4); int length = BitConverter.ToInt32(lengthBytes, 0); if (receiveBuffer.Index >= length) //buffer中有足够数据 { receiveBuffer.IncreaseIndex(4); //消息头,假设用int标识,4字节,开始读取消息体 message = receiveBuffer.ReadFromHead(length); } } }
/// <summary> /// The default buffer is 1<<16, if small will automatically add buffer block /// </summary> /// <param name="bufferSize"></param> public TcpSocket(int bufferSize = 1 << 16) { SendBuffer = new BlockBuffer <byte>(bufferSize); ReceiveBuffer = new BlockBuffer <byte>(bufferSize); }
private void OnReceiveBytesFromSocket(IBlockBuffer <byte> buffer) { byte[] bytes = new byte[] { }; _package.Unpack(buffer, ref bytes); ReceiveMessageEvent(bytes); }
public void Pack(byte[] message, IBlockBuffer <byte> sendBuffer) { sendBuffer.WriteAtEnd(message); }