public void Test1() { var aleData1 = new AleConnectionRequest() { InitiatorID = 10, ResponderID = 20, @ServiceType = ServiceType.D }; var aleFrame1 = new AleFrame(1, 111, false, aleData1); aleFrame1.Version = 1; aleFrame1.ApplicationType = 22; aleFrame1.SequenceNo = 300; Assert.AreEqual(AleFrameType.ConnectionRequest, aleFrame1.FrameType); var bytes = aleFrame1.GetBytes(); var aleFrame2 = new AleFrame(); aleFrame2.ParseBytes(bytes); Assert.AreEqual(aleFrame2.Version, aleFrame1.Version); Assert.AreEqual(aleFrame2.ApplicationType, aleFrame1.ApplicationType); Assert.AreEqual(aleFrame2.SequenceNo, aleFrame1.SequenceNo); Assert.AreEqual(aleFrame2.IsNormal, aleFrame1.IsNormal); var aleData2 = aleFrame2.UserData as AleConnectionRequest; Assert.NotNull(aleData2); Assert.AreEqual(aleData1.InitiatorID, aleData2.InitiatorID); Assert.AreEqual(aleData1.ResponderID, aleData2.ResponderID); Assert.AreEqual(aleData1.ServiceType, aleData2.ServiceType); }
protected void CheckCrFrame(AleConnectionRequest crData, AleTunnel theTunnel) { if (crData.ServiceType == ServiceType.A) { throw new Exception(string.Format("收到CR帧,请求A类服务,不支持此类型,断开连接。")); } if (crData.ResponderID != this.Context.RsspEP.LocalID) { throw new Exception(string.Format("CR帧中的被动方编号({0})与本地编号({1})不一致,断开此连接。", crData.ResponderID, this.Context.RsspEP.LocalID)); } if (crData.InitiatorID == this.Context.RsspEP.LocalID) { throw new Exception(string.Format("CR帧中的主动方编号({0})与本地编号({1})相同,断开此连接。", crData.InitiatorID, this.Context.RsspEP.LocalID)); } if (!this.Context.RsspEP.IsClientAcceptable(crData.InitiatorID, theTunnel.RemoteEndPoint)) { throw new Exception(string.Format("CR帧中的主动方编号({0})或终结点({1})不在可接受的范围内,断开此连接。", crData.InitiatorID, theTunnel.RemoteEndPoint)); } }
public void Test1() { var data1 = new AleConnectionRequest(); data1.InitiatorID = 11; data1.ResponderID = 12; data1.UserData = new byte[] { 100, 200 }; var bytes = data1.GetBytes(); var data2 = new AleConnectionRequest(); data2.ParseBytes(bytes, 0, bytes.Length - 1); Assert.AreEqual(AleFrameType.ConnectionRequest, data2.FrameType); Assert.AreEqual(11, data2.InitiatorID); Assert.AreEqual(12, data2.ResponderID); Assert.AreEqual(100, data2.UserData[0]); Assert.AreEqual(200, data2.UserData[1]); }
protected void SendConnectionRequestFrame(AleClientTunnel theConnection) { var au1Packet = this.Context.AuMsgBuilder.BuildAu1Packet(); var crData = new AleConnectionRequest(this.Context.RsspEP.LocalID, this.Context.RsspEP.RemoteID, this.Context.RsspEP.ServiceType, au1Packet); // 构建AleFrame。 ushort seqNo = 0; var appType = this.Context.RsspEP.ApplicatinType; var crFrame = new AleFrame(appType, seqNo, theConnection.IsNormal, crData); // 发送。 var bytes = crFrame.GetBytes(); theConnection.Send(bytes); LogUtility.Info(string.Format("{0}: Send CR frame via tcp connection(LEP = {1}, REP={2}).", this.Context.RsspEP.ID, theConnection.LocalEndPoint, theConnection.RemoteEndPoint)); }