public static Datagram ResolveRequest(byte[] rawDatagram) { Datagram result = null; Datagram temp = new DatagramRequest(); temp.Parse(rawDatagram); if (DatagramResolver.HeadTag.SequenceEqual(temp.Head)) { if (temp.CommandCode.SequenceEqual(HeartbeatRequest.FixCommandCode) && rawDatagram.Length == HeartbeatRequest.Length) { result = new HeartbeatRequest(); } if (temp.CommandCode.SequenceEqual(LoginRequest.FixCommandCode) && rawDatagram.Length == LoginRequest.Length) { result = new LoginRequest(); } if (temp.CommandCode.SequenceEqual(BlacklistQueryRequest.FixCommandCode) && rawDatagram.Length == BlacklistQueryRequest.Length) { result = new BlacklistQueryRequest(); } if (temp.CommandCode.SequenceEqual(BlacklistDownloadRequest.FixCommandCode) && rawDatagram.Length == BlacklistDownloadRequest.Length) { result = new BlacklistDownloadRequest(); } if (temp.CommandCode.SequenceEqual(CurrencyRequest.FixCommandCode) && rawDatagram.Length == CurrencyRequest.Length) { result = new CurrencyRequest(); } if (result != null) { result.Parse(rawDatagram); } } return result; }
public void SendLogin() { if (this.IsConnected) { LoginRequest login = new LoginRequest(); login.DeviceNumber = this.DeviceNumberHex; login.Key = new byte[] { 0x00 }; login.SoftwareVersion = new byte[] { 0x0C, 0x05, 0x10 }; login.Foot = login.BuildFoot(); this.LocalSocket.BeginSend(login.BuildFull()); } }