protected virtual void DisposeSelf() { if (this.ClientSocket != null) { CtkNetUtil.DisposeSocketTry(this.ClientSocket); } }
public int ConnectTry(string ip = null, int?port = null) { lock (this) { if (this.TcpClient.IsNonStopRunning) { return(0); } if (this.TcpClient.RemoteUri == null) { this.TcpClient.RemoteUri = CtkNetUtil.ToUri(ip, 1000); } if (!string.IsNullOrEmpty(ip)) { this.RemoteIp = ip; } if (port.HasValue) { this.RemotePort = port.Value; } if (!this.TcpClient.IsOpenRequesting && !this.TcpClient.IsRemoteConnected) { this.TcpClient.ConnectTry(); } return(0); } }
public int CfInit() { this.HsmsConnector = new CxHsmsConnector(); //hsmsConnector.ctkConnSocket.isActively = true; var localUri = string.IsNullOrEmpty(this.cfg.LocalUri) ? null : new Uri(this.cfg.LocalUri); var remoteUri = string.IsNullOrEmpty(this.cfg.RemoteUri) ? null : new Uri(this.cfg.RemoteUri); var localIp = CtkNetUtil.GetIpAdr1stLikelyOr127(localUri == null ? null : localUri.Host, remoteUri == null ? null : remoteUri.Host); if (localIp == null) { throw new Exception("無法取得在地IP"); } this.HsmsConnector.LocalUri = CtkNetUtil.ToUri(localIp.ToString(), localUri == null ? 0 : localUri.Port); this.HsmsConnector.EhReceiveData += delegate(Object sen, CxHsmsConnectorRcvDataEventArg ea) { var myMsg = ea.msg; //System.Diagnostics.Debug.WriteLine("S{0}F{1}", myMsg.header.StreamId, myMsg.header.FunctionId); //System.Diagnostics.Debug.WriteLine("SType= {0}", myMsg.header.SType); switch (myMsg.header.SType) { case 1: HsmsConnector.Send(CxHsmsMessage.CtrlMsg_SelectRsp(0)); return; case 5: HsmsConnector.Send(CxHsmsMessage.CtrlMsg_LinktestRsp()); return; } this.OnReceiveData(myMsg); }; return(0); }
public int CfInit() { hsmsConnector = new CxHsmsConnector(); //hsmsConnector.ctkConnSocket.isActively = true; var localUri = new Uri(this.cfg.LocalUri); var remoteUri = new Uri(this.cfg.RemoteUri); var localIp = CtkNetUtil.GetIpAdr1stLikelyOr127(localUri.Host, remoteUri.Host); if (localIp == null) { throw new Exception("無法取得在地IP"); } hsmsConnector.LocalUri = CtkNetUtil.ToUri(localIp.ToString(), localUri.Port); hsmsConnector.EhReceiveData += delegate(Object sen, CxHsmsConnectorRcvDataEventArg ea) { var myMsg = ea.msg; switch (myMsg.header.SType) { case 1: hsmsConnector.Send(CxHsmsMessage.CtrlMsg_SelectRsp(0)); return; case 5: hsmsConnector.Send(CxHsmsMessage.CtrlMsg_LinktestRsp()); return; } this.OnReceiveData(myMsg); }; return(0); }
public virtual int CfInit() { if (this.Config == null) { throw new SNetException("沒有設定參數"); } var remoteUri = new Uri(this.Config.RemoteUri); var localUri = string.IsNullOrEmpty(this.Config.LocalUri) ? null : new Uri(this.Config.LocalUri); var localIpAddr = CtkNetUtil.GetSuitableIp(localUri == null ? null : localUri.Host, remoteUri.Host); localUri = CtkNetUtil.ToUri(localIpAddr.ToString(), localUri == null ? 0 : localUri.Port); switch (this.Config.ProtoConnect) { case SNetEnumProtoConnect.Tcp: this.ProtoConn = new SNetProtoConnTcp(localUri, remoteUri, this.Config.IsActivelyConnect); break; case SNetEnumProtoConnect.Custom: //由使用者自己實作 break; default: throw new ArgumentException("ProtoConn");; } this.ProtoConn.IntervalTimeOfConnectCheck = this.Config.IntervalTimeOfConnectCheck; this.ProtoConn.EhFirstConnect += (ss, ee) => { this.ProtoSession.FirstConnect(this.ProtoConn); if (this.Config.IsActivelyTx) { var ackDataMsg = this.SignalTran.CreateAckMsg(this.Config.SignalCfgList); if (ackDataMsg != null) { this.ProtoConn.WriteMsg(ackDataMsg); } } else { var reqDataMsg = this.SignalTran.CreateDataReqMsg(this.Config.SignalCfgList); if (reqDataMsg != null) { this.ProtoConn.WriteMsg(reqDataMsg); } } }; this.ProtoConn.EhDataReceive += (ss, ee) => { var ea = ee as CtkProtocolEventArgs; this.ProtoFormat.ReceiveMsg(ea.TrxMessage); this.areMsg.Set(); if (this.ProtoFormat.HasMessage()) { SignalHandle(); } }; switch (this.Config.ProtoFormat) { case SNetEnumProtoFormat.SNetCmd: this.ProtoFormat = new SNetProtoFormatSNetCmd(); break; case SNetEnumProtoFormat.Secs: this.ProtoFormat = new SNetProtoFormatSecs(); break; case SNetEnumProtoFormat.Custom: //由使用者自己實作 break; default: throw new ArgumentException("必須指定ProtoFormat"); } switch (this.Config.ProtoSession) { case SNetEnumProtoSession.SNetCmd: this.ProtoSession = new SNetProtoSessionSNetCmd(); break; case SNetEnumProtoSession.Secs: this.ProtoSession = new SNetProtoSessionSecs(); break; case SNetEnumProtoSession.Custom: //由使用者自己實作 break; default: throw new ArgumentException("必須指定ProtoFormat"); } switch (this.Config.SignalTran) { case SNetEnumSignalTrans.SNetCmd: this.SignalTran = new SNetSignalTransSNetCmd(); break; case SNetEnumSignalTrans.Secs001: this.SignalTran = new SNetSignalTransSecs001(); break; case SNetEnumSignalTrans.Custom: //由使用者自己實作 break; default: throw new ArgumentException("必須指定ProtoFormat"); } return(0); }