private static bool IsConnectedToSameServer(TcpClient currentClient, Server newServer) { try { if (currentClient != null && currentClient.Connected) { var newServerEndPoint = newServer.Ip + ":" + newServer.Port; if (newServerEndPoint == currentClient.Client.RemoteEndPoint.ToString()) { return true; } } return false; } catch (Exception ex) { Cat.lastException = ex; return false; } }
private static TcpClient CreateChannel(Server server) { if (!server.Enabled) { return null; } TcpClient socket = new TcpClient(); socket.NoDelay = true; socket.ReceiveTimeout = 2*1000; // 2 seconds string ip = server.Ip; int port = server.Port; // Logger.Info("Connecting to server({0}:{1}) ...", ip, port); try { socket.Connect(ip, port); if (socket.Connected) { // Logger.Info("Connected to server({0}:{1}).", ip, port); return socket; } Logger.Error("Failed to connect to server({0}:{1}).", ip, port); } catch (Exception e) { Logger.Error( "Failed to connect to server({0}:{1}). Error: {2}.", ip, port, e.Message ); Cat.lastException = e; if (null != socket) { try { socket.Close(); } catch (Exception ex) { Cat.lastException = ex; }; } } return null; }
private static IEnumerable<Server> BuildServers(XmlNodeList nodes) { List<Server> servers = new List<Server>(); if (nodes != null && nodes.Count > 0) { XmlElement first = (XmlElement)nodes[0]; XmlNodeList serverNodes = first.GetElementsByTagName("server"); foreach (XmlNode node in serverNodes) { XmlElement serverNode = (XmlElement)node; string ip = GetStringProperty(serverNode, "ip", "localhost"); int port = GetIntProperty(serverNode, "port", 2280); int httpPort = GetIntProperty(serverNode, "http-port", 8080); Server server = new Server(ip, port, httpPort) { Enabled = GetBooleanProperty(serverNode, "enabled", true) }; servers.Add(server); } } if (servers.Count == 0) { Logger.Warn("No server configured, use localhost:2280 instead."); servers.Add(new Server("localhost", 2280)); } return servers; }