/// <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); }
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; }