Beispiel #1
0
        private TcpClient CreateChannel(int index)
        {
            CatServer server = _mClientConfig.Servers[index];

            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;

            PureCat.Util.Logger.Info("Connecting to server({0}:{1}) ...", ip, port);

            try
            {
                socket.Connect(ip, port);

                if (socket.Connected)
                {
                    PureCat.Util.Logger.Info("Connected to server({0}:{1}).", ip, port);

                    return(socket);
                }
                PureCat.Util.Logger.Error("Failed to connect to server({0}:{1}).", ip, port);
            }
            catch (Exception e)
            {
                PureCat.Util.Logger.Error(
                    "Failed to connect to server({0}:{1}). Error: {2}.",
                    ip,
                    port,
                    e.Message
                    );
            }

            return(null);
        }
Beispiel #2
0
 public void RandomServer()
 {
     if (_server == null || _server.Count < 2)
     {
         return;
     }
     lock (_lock)
     {
         int       k         = 0;
         int       index     = 0;
         CatServer tmpServer = null;
         for (int i = 0; i < _server.Count * 3; i++)
         {
             index = i % _server.Count;
             k     = _mRandom.Next(_server.Count);
             if (k != index)
             {
                 tmpServer      = _server[index];
                 _server[index] = _server[k];
                 _server[k]     = tmpServer;
             }
         }
     }
 }