//接受Client的连接 public void AcceptClientConnect(object varSoket) { sockCategory sc = varSoket as sockCategory; this.AppendToLOG("主控中心开始接受所有Client端性能数据传输..."); while (true) { var proxSocket = sc.sockIns.Accept(); sc.sockList.Add(proxSocket); this.AppendToLOG(string.Format("Client端{0}已连接性能数据发送链路...", proxSocket.RemoteEndPoint.ToString())); } }
public void ReceiveData(object varSoket) { sockCategory sc = varSoket as sockCategory; string tmp = sc.sockIns.RemoteEndPoint.ToString(); //超隐蔽BUG "10.14.206.176:55778" string terminalIP = tmp.Substring(0, tmp.IndexOf(':')); byte[] data = new byte[1024 * 1024]; while (true) { int len = 0; try { len = sc.sockIns.Receive(data, 0, data.Length, SocketFlags.None); } catch (Exception ex) { //Terminal端异常退出 StopConnect(sc.sockIns); sc.sockList.Remove(sc.sockIns); sc.perData.Remove(terminalIP);//性能数据里移除掉该terminal AppendToLOG(string.Format("Terminal端:{0}异常退出,{1}", terminalIP, ex.ToString())); return; } if (len <= 0) { //Terminal端正常退出 StopConnect(sc.sockIns); sc.sockList.Remove(sc.sockIns); sc.perData.Remove(terminalIP); //性能数据里移除掉该terminal AppendToLOG(string.Format("Terminal端:{0}正常退出", terminalIP)); return; //让方法结束,终结当前接受客户端数据的异步线程 } //把接受到的数据放到文本框输出上 string[] strPer = (terminalIP + Encoding.Default.GetString(data, 0, len)).Split(':'); string ip = strPer[0]; string per = strPer[1] + "-" + strPer[2]; //性能数据存储 if (sc.perData.ContainsKey(ip)) { sc.perData[ip] = per; } else { sc.perData.Add(ip, per); } //AppendToLOG(string.Format("{0}{1}", ip, per)); } }
//接受Termianl的连接 public void AcceptTerminalConnect(object varSoket) { sockCategory sc = varSoket as sockCategory; this.AppendToLOG("主控中心开始接受所有Terminal端性能数据传输..."); while (true) { var proxSocket = sc.sockIns.Accept(); sc.sockList.Add(proxSocket); this.AppendToLOG(string.Format("Terminal端{0}已连接性能数据接受链路...", proxSocket.RemoteEndPoint.ToString())); //不停地接受当前连接的客户端发送来的消息 ThreadPool.QueueUserWorkItem(new WaitCallback(ReceiveData), new sockCategory { sockIns = proxSocket, sockList = sc.sockList, perData = sc.perData }); } }