Ejemplo n.º 1
0
        /// <summary>
        /// 使用正则表达式匹配SS服务器信息
        /// </summary>
        /// <param name="url">目标URL</param>
        /// <param name="pattern">正则表达式,必须使用命名捕获分组指定SS相关信息
        /// server -> 服务器IP或域名
        /// port -> 服务器端口
        /// password -> 服务器密码
        /// method -> 加密方式
        /// </param>
        /// <returns>捕获到的服务器列表</returns>
        protected Server[] getFreeServerByRegex(string url, string pattern)
        {
            // TODO 修改成配置文件方式读取参数
            Server[] servers = null;
            HttpGet(url, Convert.ToString(Environment.TickCount), (responseStream) =>
            {
                using (StreamReader reader = new StreamReader(responseStream))
                {
                    string html             = reader.ReadToEnd();
                    MatchCollection matcher = Regex.Matches(html, pattern);
                    servers = new Server[matcher.Count];
                    for (int i = 0; i < matcher.Count; i++)
                    {
                        Match match     = matcher[i];
                        string server   = match.Groups["server"].Value;
                        int port        = Convert.ToInt32(match.Groups["port"].Value);
                        string password = match.Groups["password"].Value;
                        string method   = match.Groups["method"].Value;

                        servers[i]             = new ServerEx();
                        servers[i].method      = method;
                        servers[i].server      = server;
                        servers[i].server_port = port;
                        servers[i].password    = password;

                        Debug.WriteLine("Found Server ->\n" + servers[i]);
                    }
                }
            });
            return(servers);
        }
Ejemplo n.º 2
0
 private void frmServerExSample_Load(object sender, EventArgs e)
 {
     m_server = new ServerEx <Big5Session>();
     m_server.OnReceiveMsg        += M_server_OnReceiveMsg;
     m_server.OnSendMsg           += M_server_OnSendMsg;
     m_server.OnSessionConnect    += M_server_OnSessionConnect;
     m_server.OnSessionDisconnect += M_server_OnSessionDisconnect;
     m_server.OnServerStart       += M_server_OnServerStart;
     m_server.OnServerFail        += M_server_OnServerFail;
 }