首页 > 代码库 > MYWebServer
MYWebServer
using System;using System.Collections.Generic;using System.Text;using System.Net.Sockets;using System.Threading;using System.IO;namespace TrialSystem{ /// <summary> /// 读取到正确的配置信息后调用 /// </summary> public class MYWebServer { #region 直播的笔录 (笔录内容实时更新这个对像) private static string _reocrdValue = http://www.mamicode.com/""; public static string ReocrdValue { get { return MYWebServer._reocrdValue; } set { MYWebServer._reocrdValue =http://www.mamicode.com/ value; } } #endregion #region 存放 系统中的临时用户 //public static List<UserEntity> userList = new List<UserEntity>(); public static List<object> userList = new List<object>(); #endregion #region 连接打开的html页面 //recordValue public static string reocrdLive = ""; //error.htm public static string error = ""; //login.htm public static string login = ""; //login.htm public static string login1 = ""; #endregion ///////////////////////////////////////////////////////////////////////////////////// STWebServer webServer; /// <summary> /// 初始化网络服务 显示不同网页的基本内容 /// </summary> /// <param name="ip">系统IP</param> /// <param name="port">网络端口</param> /// <param name="SB_ip">设备ip</param> /// <param name="SB_port">设备端口</param> /// <param name="SB_userName">设备用户</param> /// <param name="SB_passWord">设备密码</param> /// <param name="CrRoomid">视频直播的对讲房间Id</param> /// <param name="WBBoardID"></param> public void init(string ip,string port ,string SB_ip,string SB_port,string SB_userName,string SB_passWord, string CrRoomid, string WBBoardID,string sttype) { try { string reocrdLive1 =""; //switch (sttype) //{ // case APP.AppProperty.SB_StrNEWS600: reocrdLive1 = ""; //Application.StartupPath + "\\reocrdLive\\reocrdLive1.htm"; // break; // default: // reocrdLive1 = Application.StartupPath + "\\reocrdLive\\reocrdLive.htm"; // break; //} string text = File.ReadAllText(reocrdLive1, Encoding.Default); // text = text.Replace("@url", "http://" + ip + ":" + port + "/bl"); text = text.Replace("@serverIp", ip);//"192.168.1.57" text = text.Replace("@fdblive_ip", SB_ip);//"192.168.1.163" text = text.Replace("@fdblive_port", SB_port);//"3000" text = text.Replace("@fdblive_name", SB_userName);//"888888" text = text.Replace("@fdblive_pwd", SB_passWord);//"888888" text = text.Replace("@fdblive_roomId", CrRoomid);//"10500" text = text.Replace("@WBBoard_roomId", "6BF52A52-394A-11d3-B153-00C04F79FAA6"); MYWebServer.reocrdLive = text; string error = "";// Application.StartupPath + "\\reocrdLive\\error.htm"; string errortext = File.ReadAllText(error, Encoding.Default); MYWebServer.error = errortext; string login = "";//Application.StartupPath + "\\reocrdLive\\login.htm"; string logintext = File.ReadAllText(login, Encoding.Default); logintext = logintext.Replace("@loginurl", "http://" + ip + ":" + port + "/zb");//"888888" MYWebServer.login = logintext; string login1 = "";//Application.StartupPath + "\\reocrdLive\\login1.htm"; string login1text = File.ReadAllText(login1, Encoding.Default); login1text = login1text.Replace("@loginurl", "http://" + ip + ":" + port + "/zb");//"888888" MYWebServer.login1 = login1text; } catch (Exception ex) { //APP.Loger.Writer(ex, "初始化网络直播服务"); } } //启动 public void StartWebServer(string ip="", string port="80") { try { //启动httpServer 应该是进入笔录系统后再启动 STWebServer.port = int.Parse(port); webServer = new STWebServer(); } catch (Exception ex) { //APP.Loger.Writer(ex, "启动网络直播服务"); } } //关闭 public void StopWebServer() { try { webServer.DisposeServer(); } catch (Exception ex) { //APP.Loger.Writer(ex, "关闭网络直播服务"); } } //重启httpserver public void NeadREStartWebServer(string ip = "", string port = "") { try { webServer.DisposeServer(); STWebServer.port = int.Parse(port); webServer = new STWebServer(); } catch (Exception ex) { //APP.Loger.Writer(ex, "重启网络直播服务"); } } } internal class HttpRequest { private System.Collections.Hashtable paramsKeyMap; public System.Collections.Hashtable ParamsKeyMap { get { return paramsKeyMap; } set { paramsKeyMap = value; } } public void parseParamsMap(string url) { string[] ccc = url.Split(‘?‘); if (ccc.Length == 2) { string _strparams = ccc[1]; string[] key = _strparams.Split(‘&‘); ParamsKeyMap = new System.Collections.Hashtable(key.Length); foreach (string k in key) { string[] ky = k.Split(‘=‘); if (ky.Length == 2) { paramsKeyMap.Add(ky[0], ky[1]); } else if (ky.Length == 1) { paramsKeyMap.Add(ky[0], ""); } } } } public string this[string key] { get { if (ParamsKeyMap != null) { if (ParamsKeyMap.ContainsKey(key)) { return (string)ParamsKeyMap[key]; } else { return ""; } } else { return ""; } } } } internal class SocketParams { private System.Net.Sockets.Socket m_accpetSocket = null; private System.Threading.Thread m_curThread = null; private STWebServer m_ptrWebServer = null; public SocketParams(ref System.Net.Sockets.Socket target) { this.m_accpetSocket = target; } public void set_WebServerPtr(STWebServer ptr) { this.m_ptrWebServer = ptr; } public void set_thread(ref System.Threading.Thread pthread) { this.m_curThread = pthread; } public void SendHeader(string sHttpVersion, string sMIMEHeader, int iTotBytes, string sStatusCode, ref Socket mySocket) { String sBuffer = ""; if (sMIMEHeader.Length == 0) { sMIMEHeader = "text/html"; // 默认 text/html } // sBuffer = sBuffer + sHttpVersion + " " + sStatusCode + "\r\n"; sBuffer = sBuffer + "Server: cx1193719-b\r\n"; sBuffer = sBuffer + "Content-Type: " + sMIMEHeader + "\r\n"; sBuffer = sBuffer + "Accept-Ranges: bytes\r\n"; sBuffer = sBuffer + "Content-Length: " + iTotBytes + "\r\n\r\n"; Byte[] bSendData = Encoding.ASCII.GetBytes(sBuffer); SendToBrowser(bSendData, ref mySocket); Console.WriteLine("Total Bytes : " + iTotBytes.ToString()); //String sBuffer = ""; //if (sMIMEHeader.Length == 0) //{ // sMIMEHeader = "text/html"; // 默认 text/html //} //sBuffer = sBuffer + sHttpVersion + sStatusCode + "\r\n"; //sBuffer = sBuffer + "Server: cx1193719-b\r\n"; //sBuffer = sBuffer + "Content-Type: " + sMIMEHeader + "\r\n"; //sBuffer = sBuffer + "Accept-Ranges: bytes\r\n"; //sBuffer = sBuffer + "Content-Length: " + iTotBytes + "\r\n\r\n"; //Byte[] bSendData = http://www.mamicode.com/Encoding.ASCII.GetBytes(sBuffer);>//SendToBrowser(bSendData, ref mySocket); //Console.WriteLine("Total Bytes : " + iTotBytes.ToString()); } private object lockHelper = new object(); private const string xml = "<?xml version=\"1.0\" encoding=\"gb2312\" ?><Record-status>{0}</Record-status>"; public System.Collections.Hashtable parseParamMap(string _param) { string[] arr = _param.Split(‘&‘); string[] av; System.Collections.Hashtable _requestParams = new System.Collections.Hashtable(); foreach (string o in arr) { av = o.Split(‘=‘); if (av.Length == 2) { _requestParams.Add(av[0], av[1]); } } return _requestParams; } public string getIP(string str) { string[] arr = str.Split(‘:‘); if (arr.Length == 2) { return arr[0]; } else { return str; } } public int min(int f, int l) { if (f > l) { return l; } else { return f; } } public void SendToBrowser(String sData, ref Socket mySocket) { SendToBrowser(Encoding.ASCII.GetBytes(sData), ref mySocket); } int NET_MTU = 1500; public void SendToBrowser(Byte[] bSendData, ref Socket mySocket)//23155 { int numBytes = 0; try { if (mySocket.Connected) { int totallen = bSendData.Length; int curr_pos = 0; if (totallen <= NET_MTU) { if ((numBytes = mySocket.Send(bSendData, totallen, 0)) != -1) { } } else { int left_size = NET_MTU; int send_len = 0; while ((numBytes = mySocket.Send(bSendData, curr_pos, left_size, 0)) != -1) { curr_pos += left_size; send_len += numBytes; left_size = totallen - send_len; if (left_size >= NET_MTU) { left_size = NET_MTU; } if (left_size == 0) { break; } } Console.WriteLine("###Send Total Size:" + send_len); } } else Console.WriteLine("连接失败...."); } catch (Exception e) { Console.WriteLine("发生错误 : {0} ", e); //APP.Loger.Writer(e, "SendToBrowser"); } } public void ServiceRecv() { try { do { if (null == m_accpetSocket) break; if (m_accpetSocket.Connected) { int iStartPos = 0; String sRequest; String sDirName; //String sRequestedFile; String sErrorMessage; int returnStatus = -1; Byte[] bReceive = new Byte[1024 * 4]; try { int i = m_accpetSocket.Receive(bReceive, bReceive.Length, 0); } catch (System.Exception e) { //APP.Loger.Writer(e, ""); m_accpetSocket.Close(); continue; } HttpRequest request = new HttpRequest(); string icc = ""; string hostIp = ""; string sHttpVersion = ""; try { string sBuffer = Encoding.ASCII.GetString(bReceive); //只处理"get"请求类型 if (sBuffer.Substring(0, 3) != "GET") { Console.WriteLine("只处理get请求类型.."); m_accpetSocket.Close(); continue; } // 查找 "HTTP" 的位置 iStartPos = sBuffer.IndexOf("HTTP", 1); sHttpVersion = sBuffer.Substring(iStartPos, 8); // 得到请求类型和文件目录文件名 sRequest = sBuffer.Substring(0, iStartPos - 1); sRequest.Replace("\\", "/"); //如果结尾不是文件名也不是以"/"结尾则加"/" if ((sRequest.IndexOf(".") < 1) && (!sRequest.EndsWith("/"))) { sRequest = sRequest + "/"; } //判断参数 string[] arr = sRequest.Split(‘?‘); //得到请求文件目录 "GET /loginaAction.cgi?txtUsername=admin&txtPassword=admin" sDirName = sRequest.Substring(sRequest.IndexOf("/"), sRequest.LastIndexOf("/") - 3); int len = sRequest.IndexOf("/"); icc = sRequest.Substring(len, sRequest.Length - len); request.parseParamsMap(icc); //取出IP try { Console.WriteLine("\nClient Connected!!\n==================\nCLient IP {0}\n", m_accpetSocket.RemoteEndPoint); hostIp = getIP(m_accpetSocket.RemoteEndPoint.ToString()); } catch (System.Exception e) { //APP.Loger.Writer(e, ""); } } catch (Exception ex) { //APP.Loger.Writer(ex, ""); } try { //http://localhost:8110/zb // 浏览器中输入的url,获取整个页面 //http://localhost:8110/bl // 网页定时获取笔录 //main.jpg // 网页logo //login.jpg // 登陆Logo //PNG图像 .jpg image/png //GIF图形 .gif image/gif //JPEG图形 .jpeg,.jpg image/jpeg //rar application/x-rar-compressed //exe application/octet-stream icc = icc.ToLower(); //登陆 if (icc.IndexOf("/dl") != -1) { sErrorMessage = LoginWebForm(hostIp, sHttpVersion); } else if (icc.IndexOf("/zb") != -1) { lock (lockHelper) { string[] arryParam = icc.Split(‘&‘); //默认以指挥人员身份登录;0:指挥人员,1:受令人员 string loginType = "0"; if (arryParam.Length == 5) { loginType = arryParam[3].Replace("login=", "").Replace("/", ""); ; } else if (arryParam.Length <= 3) { return; } string userName = arryParam[1]; string password = arryParam[2].Replace("/", ""); //得到参数后,判断是否是加密过后的 string passwordType = arryParam[4]; sErrorMessage = WebForm3(sHttpVersion, ref loginType, userName, password, passwordType); } } else if (icc.IndexOf("/bl") != -1) { lock (lockHelper) { MYWebServer.ReocrdValue = MYWebServer.ReocrdValue.Replace("\n","<br>"); //这里取笔录 sErrorMessage = MYWebServer.ReocrdValue; SendHeader(sHttpVersion, "text/html", Encoding.UTF8.GetBytes(sErrorMessage).Length, "200 OK", ref m_accpetSocket); SendToBrowser(Encoding.UTF8.GetBytes(sErrorMessage), ref m_accpetSocket); Console.WriteLine("Web Server Running... RECORD"); } } else if (icc.Equals("/reocrdlive/img/login.jpg")) { lock (lockHelper) { //这里取loginlogo string loginLogo = "";//Application.StartupPath + "\\reocrdLive\\img\\login.jpg"; m_accpetSocket.SendFile(loginLogo); } } else if (icc.Equals("/reocrdlive/img/main.jpg")) { lock (lockHelper) { //这里取mainlogo string mainLogo = "";// Application.StartupPath + "\\reocrdLive\\img\\main.jpg"; m_accpetSocket.SendFile(mainLogo); } } else if (icc.IndexOf("/reocrdlive/tools/bord.exe") != -1) { lock (lockHelper) { //这里取mainlogo string bordFile = "";//Application.StartupPath + "\\reocrdLive\\tools\\bord.exe"; if (File.Exists(bordFile)) { m_accpetSocket.SendFile(bordFile); } } } else if (icc.IndexOf("/reocrdlive/tools/laviview.exe") != -1) { lock (lockHelper) { //这里取mainlogo string laviViewFile = "";//Application.StartupPath + "\\reocrdLive\\tools\\LaviView.exe"; m_accpetSocket.SendFile(laviViewFile); } } else if (icc.IndexOf("/reocrdlive/tools/axaudiotalk.exe") != -1) { lock (lockHelper) { //这里取mainlogo string laviViewFile = "";// Application.StartupPath + "\\reocrdLive\\tools\\AxAudioTalk.exe"; m_accpetSocket.SendFile(laviViewFile); } } else { //sErrorMessage = string.Format(xml, returnStatus); //SendHeader(sHttpVersion, "", sErrorMessage.Length, " 200 OK", ref m_accpetSocket); //SendToBrowser(sErrorMessage, ref m_accpetSocket); } } catch (Exception ex) { //APP.Loger.Writer(ex, ""); sErrorMessage = string.Format(xml, returnStatus); SendHeader(sHttpVersion, "", sErrorMessage.Length, " 200 OK", ref m_accpetSocket); SendToBrowser(sErrorMessage, ref m_accpetSocket); } try { m_accpetSocket.Close(); } catch { } } } while (false); } catch (Exception ex) { //APP.Loger.Writer(ex, ""); } if (null != m_curThread && null != m_ptrWebServer) { m_ptrWebServer.remove_thread(ref m_curThread); } } private String WebForm3(string sHttpVersion, ref string loginType, string userName, string password, string passwordType) { String sErrorMessage=""; if (passwordType.Equals("passwordtype=0/")) { sErrorMessage = webForm1(sHttpVersion, ref loginType, userName, password); } else if (passwordType.Equals("passwordtype=1/")) { //foreach (UserEntity ue in MYWebServer.userList) //{ // string pasw=EncryptArithmetic.Encode(ue.STPassWord).ToLower(); // string pasw1 = EncryptArithmetic.Encode(password).ToLower(); // if (ue.STUserName.Equals(userName) && pasw.Equals(pasw1)) // { // string roleType = "受令"; // if (!ue.QuanXianJueSe.Equals("指挥")) // { // //自动切换为受令人员; // loginType = "1"; // roleType = "受令"; // } // if (loginType.Equals("0")) // { // roleType = "指挥"; // } // else // { // roleType = "受令"; // } // //跳转到加密界面 // //这里取登陆界面 // sErrorMessage = MYWebServer.login1.Replace("@userName", userName).Replace("@Password", EncryptArithmetic.Encode(password).ToLower()).Replace("@login", loginType); // SendHeader(sHttpVersion, "text/html", Encoding.Default.GetBytes(sErrorMessage).Length, "200 OK", ref m_accpetSocket);//22510 // SendToBrowser(Encoding.Default.GetBytes(sErrorMessage), ref m_accpetSocket); // break; // } //} } return sErrorMessage; } private String webForm1(string sHttpVersion, ref string loginType, string userName, string password) { String sErrorMessage=""; //hostIp //foreach (UserEntity ue in MYWebServer.userList) //{ // string pasw = EncryptArithmetic.Encode(ue.STPassWord).ToLower(); // if (ue.STUserName.Equals(userName) && pasw.Equals(password)) // { // string roleType = "受令"; // if (!ue.QuanXianJueSe.Equals("指挥")) // { // //自动切换为受令人员; // loginType = "1"; // roleType = "受令"; // } // if (loginType.Equals("0")) // { // roleType = "指挥"; // } // else // { // roleType = "受令人员"; // } // string newHTML = MYWebServer.reocrdLive.Replace("@userName", ue.STUserName).Replace("@recv_talk", loginType).Replace("@loginType", roleType); // //PublicForm.reocrdLive; // //这里取直播界面 // //sErrorMessage = PublicForm.reocrdLive;//.Replace("@txt_userName", "").Replace("@txt_userName", ""); // SendHeader(sHttpVersion, "text/html", Encoding.Default.GetBytes(newHTML).Length, "200 OK", ref m_accpetSocket);//22510 // SendToBrowser(Encoding.Default.GetBytes(newHTML), ref m_accpetSocket); // break; // } //} //这里取直播界面 sErrorMessage = MYWebServer.error; SendHeader(sHttpVersion, "text/html", Encoding.Default.GetBytes(sErrorMessage).Length, "200 OK", ref m_accpetSocket);//22510 SendToBrowser(Encoding.Default.GetBytes(sErrorMessage), ref m_accpetSocket); return sErrorMessage; } private String LoginWebForm(string hostIp, string sHttpVersion) { String sErrorMessage=""; lock (lockHelper) { ////hostIp //foreach (UserEntity ue in MYWebServer.userList) //{ // if (ue.BangDingIP!=null&&ue.BangDingIP.Equals(hostIp)) // { // //这里取登陆界面 // sErrorMessage = MYWebServer.login.Replace("@txt_userName", ue.STUserName).Replace("@txt_password", ue.STPassWord); // SendHeader(sHttpVersion, "text/html", Encoding.Default.GetBytes(sErrorMessage).Length, "200 OK", ref m_accpetSocket);//22510 // SendToBrowser(Encoding.Default.GetBytes(sErrorMessage), ref m_accpetSocket); // break; // } //} ////这里空登陆界面 //sErrorMessage = MYWebServer.login.Replace("@txt_userName", "").Replace("@txt_password", ""); //SendHeader(sHttpVersion, "text/html", Encoding.Default.GetBytes(sErrorMessage).Length, "200 OK", ref m_accpetSocket);//22510 //SendToBrowser(Encoding.Default.GetBytes(sErrorMessage), ref m_accpetSocket); } return sErrorMessage; } } internal class STWebServer : IDisposable { private const string xml = "<?xml version=\"1.0\" encoding=\"gb2312\" ?><Record-status>{0}</Record-status>"; private TcpListener myListener; public static int port = 80; // 选者任何闲置端口 public static System.Collections.Hashtable ipMap = new System.Collections.Hashtable(); private Thread th; //开始兼听端口 同时启动一个兼听进程 public STWebServer() { try { //开始兼听端口 myListener = new TcpListener(port); myListener.Start(); Console.WriteLine("Web Server Running... Press ^C to Stop..."); //同时启动一个兼听进程 ‘‘StartListen‘‘ th = new Thread(new ThreadStart(StartListen)); th.Start(); } catch (Exception e) { Console.WriteLine("兼听端口时发生错误 :" + e.ToString()); } } ~STWebServer() { if (th != null) { th.Abort(); } //t.Stop(); } public delegate void update(string word); System.Windows.Forms.ListBox _listBox; System.Windows.Forms.Label _label; public void SetListBox(ref System.Windows.Forms.Label _label) { this._label = _label; } public void ShowMessage(string mes) { //_label.Text = mes; //System.Windows.Forms.MessageBox.Show(mes); } public void SetListBox(ref System.Windows.Forms.ListBox _listBox) { this._listBox = _listBox; } public void _removeList(string word) { if (_listBox.Items.Contains(word)) { int index = 0; foreach (string str in _listBox.Items) { if (str.Equals(word)) { _listBox.Items.RemoveAt(index); break; } index++; } //_listBox.Items.Remove(word); } } public void _updateList(string word) { int len = _listBox.Items.Count; if (len == 0) { _listBox.Items.Add(word); } else { if (_listBox.Items.Contains(word)) { int index = 0; foreach (string str in _listBox.Items) { if (str.Equals(word)) { _listBox.Items.RemoveAt(index); break; } index++; } //_listBox.Items.Remove(word); } else { _listBox.Items.Add(word); } } } public void listShow(string word) { this._listBox.BeginInvoke(new update(_updateList), word); } public void removeList(string word) { this._listBox.BeginInvoke(new update(_removeList), word); } public void SendHeader(string sHttpVersion, string sMIMEHeader, int iTotBytes, string sStatusCode, ref Socket mySocket) { String sBuffer = ""; if (sMIMEHeader.Length == 0) { sMIMEHeader = "text/html"; // 默认 text/html } sBuffer = sBuffer + sHttpVersion + sStatusCode + "\r\n"; sBuffer = sBuffer + "Server: cx1193719-b\r\n"; sBuffer = sBuffer + "Content-Type: " + sMIMEHeader + "\r\n"; sBuffer = sBuffer + "Accept-Ranges: bytes\r\n"; sBuffer = sBuffer + "Content-Length: " + iTotBytes + "\r\n\r\n"; Byte[] bSendData = Encoding.ASCII.GetBytes(sBuffer); SendToBrowser(bSendData, ref mySocket); Console.WriteLine("Total Bytes : " + iTotBytes.ToString()); //String sBuffer = ""; //if (sMIMEHeader.Length == 0) //{ // sMIMEHeader = "text/html"; // 默认 text/html //} //sBuffer = sBuffer + sHttpVersion + sStatusCode + "\r\n"; //sBuffer = sBuffer + "Server: cx1193719-b\r\n"; //sBuffer = sBuffer + "Content-Type: " + sMIMEHeader + "\r\n"; //sBuffer = sBuffer + "Accept-Ranges: bytes\r\n"; //sBuffer = sBuffer + "Content-Length: " + iTotBytes + "\r\n\r\n"; //Byte[] bSendData = http://www.mamicode.com/Encoding.ASCII.GetBytes(sBuffer);>//SendToBrowser(bSendData, ref mySocket); //Console.WriteLine("Total Bytes : " + iTotBytes.ToString()); } private object lockHelper = new object(); public void SendToBrowser(String sData, ref Socket mySocket) { SendToBrowser(Encoding.ASCII.GetBytes(sData), ref mySocket); } int NET_MTU = 1500; public void SendToBrowser(Byte[] bSendData, ref Socket mySocket)//23155 { int numBytes = 0; try { if (mySocket.Connected) { int totallen = bSendData.Length; int curr_pos = 0; if (totallen <= NET_MTU) { if ((numBytes = mySocket.Send(bSendData, totallen, 0)) != -1) { } } else { int left_size = NET_MTU; int send_len = 0; while ((numBytes = mySocket.Send(bSendData, curr_pos, left_size, 0)) != -1) { curr_pos += left_size; send_len += numBytes; left_size = totallen - send_len; if (left_size >= NET_MTU) { left_size = NET_MTU; } if (left_size == 0) { break; } } Console.WriteLine("###Send Total Size:" + send_len); } } else Console.WriteLine("连接失败...."); } catch (Exception e) { Console.WriteLine("发生错误 : {0} ", e); } } public System.Collections.Hashtable parseParamMap(string _param) { string[] arr = _param.Split(‘&‘); string[] av; System.Collections.Hashtable _requestParams = new System.Collections.Hashtable(); foreach (string o in arr) { av = o.Split(‘=‘); if (av.Length == 2) { _requestParams.Add(av[0], av[1]); } } return _requestParams; } public string getIP(string str) { string[] arr = str.Split(‘:‘); if (arr.Length == 2) { return arr[0]; } else { return str; } } public int min(int f, int l) { if (f > l) { return l; } else { return f; } } private List<Thread> ThList = null; public void remove_thread(ref Thread traget) { try { if (null != ThList) { if (ThList.Contains(traget)) { ThList.Remove(traget); } //traget.Abort(); } } catch (Exception ex) { //APP.Loger.Writer(ex, ""); //Console.WriteLine(ex.Message); } } public void StartListen() { int iStartPos = 0; String sRequest; String sDirName; //String sRequestedFile; String sErrorMessage; while (true) { //接受新连接 lock (lockHelper) { Socket mySocket = myListener.AcceptSocket(); SocketParams param = new SocketParams(ref mySocket); Thread T = new Thread(new ThreadStart(param.ServiceRecv)); param.set_thread(ref T); param.set_WebServerPtr(this); T.Start(); if (ThList == null) { ThList = new List<Thread>(); } ThList.Add(T); } } } public void DisposeServer() { try { //ViewManager.Instance.clear(); ipMap.Clear(); th.Abort(); myListener.Stop(); } catch { } } #region IDisposable 成员 void IDisposable.Dispose() { try { DisposeServer(); } catch { } } #endregion }}
MYWebServer
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。