public static SAMPLE.Hello Decode(byte[] buffer, int offset, int count) { if (count < 10) // header + tail { return(null); } // SignatureStart (2 bytes little endian ushort) = 16018 int size = 2; ushort signature = LittleEndianBytesToUshort(buffer, offset); if (signature != SIGNATURE_START) { return(null); } offset += size; // PacketLength (2 bytes little endian ushort) size = 2; ushort packetLength = LittleEndianBytesToUshort(buffer, offset); if (count < packetLength) { return(null); } offset += size; // PacketID(unused) (2 bytes little endian ushort) = 1 size = 2; //ushort unused = LittleEndianBytesToUshort(buffer, offset); offset += size; // MessageLength (2 bytes little endian ushort) size = 2; ushort messageLength = LittleEndianBytesToUshort(buffer, offset); offset += size; // Header (PacketLength – 10 - MessageLength bytes google protocol buffer) size = packetLength - 8; MemoryStream mem = new MemoryStream(); mem.Write(buffer, offset, size); mem.Seek(0, SeekOrigin.Begin); SAMPLE.Hello header = ProtoBuf.Serializer.Deserialize <SAMPLE.Hello>(mem); mem.Close(); offset += size; // SignatureEnd (2 bytes little endian ushort) = 16108 size = 2; signature = LittleEndianBytesToUshort(buffer, offset); if (signature != SIGNATURE_END) { return(null); } return(header); }
public void OnSendButton() { if (network.IsConnected()) { network.GetStream().Flush(); SAMPLE.Hello message = new SAMPLE.Hello(); message.message = inputField.text; byte[] data = CGSFNet.CGSFNetProtocol.Encode <SAMPLE.Hello>(message, (ushort)SAMPLE.ID.HELLO); NetworkStream stream = network.GetStream(); stream.BeginWrite(data, 0, data.Length, WriteCallback, null); } }
public void OnSendButton() { if(network.IsConnected()) { network.GetStream().Flush(); SAMPLE.Hello message = new SAMPLE.Hello(); message.message = "test " + index.ToString(); index++; byte[] data = CGSFNet.CGSFNetProtocol.Encode<SAMPLE.Hello>(message, (ushort)SAMPLE.ID.HELLO); NetworkStream stream = network.GetStream(); stream.BeginWrite(data, 0, data.Length, WriteCallback, null); } }