/// <summary> /// 启动TCP服务 /// </summary> /// <param name="host">TCP服务端口信息</param> /// <param name="certificateFileName">安全证书文件</param> /// <returns>HTTP服务启动状态</returns> private TmphStartState start(TmphHost host, string certificateFileName) { var state = TmphStartState.TcpError; TmphServer server = null; Monitor.Enter(hostLock); try { if (hosts.TryGetValue(host, out server)) { if (server.CheckCertificate(certificateFileName)) { ++server.DomainCount; return TmphStartState.Success; } server = null; state = TmphStartState.CertificateMatchError; } else { state = TmphStartState.CertificateError; server = certificateFileName == null ? new TmphServer(this, host) : new TmphSslServer(this, host, certificateFileName); state = TmphStartState.TcpError; if (server.Start()) { hosts.Add(host, server); return TmphStartState.Success; } } } catch (Exception error) { TmphLog.Error.Add(error, null, false); } finally { Monitor.Exit(hostLock); } TmphPub.Dispose(ref server); return state; }