public void WeaveExecuteTokenoutMethod(string _token) { ////移出onlinetoken int count = weaveOnline.Count; WeaveOnLine[] ols = new WeaveOnLine[count]; weaveOnline.CopyTo(0, ols, 0, count); foreach (WeaveOnLine onlinesession in ols) { if (onlinesession.Token == _token)//temp[1]) { foreach (WeaveTCPCommandItem cmdItem in weaveTCPCommandItems) { try { cmdItem.WeaveTcpCmd.Tokenout(onlinesession); } catch (Exception ex) { WeaveLogEvent?.Invoke("Tokenout", ex.Message); } } weaveOnline.Remove(onlinesession); return; } } }
public void WeaveExcCmdNoCheckCmdName(byte command, string data, System.Net.Sockets.Socket soc) { foreach (CmdWorkItem cmd in CmdWorkItems) { try { cmd.WeaveTcpCmd.Runcommand(command, data, soc); } catch (Exception ex) { WeaveLogEvent?.Invoke("receiveevent", ex.Message); } } }
/// <summary> /// 执行继承自WeaveTCPCommand类里面的Runcommand方法 /// </summary> /// <param name="command"></param> /// <param name="data"></param> /// <param name="soc"></param> public void WeaveExecuteRuncommandMethod(byte command, string data, System.Net.Sockets.Socket soc) { foreach (WeaveTCPCommandItem cmd in weaveTCPCommandItems) { try { cmd.WeaveTcpCmd.Runcommand(command, data, soc); } catch (Exception ex) { WeaveLogEvent?.Invoke("receiveevent", ex.Message); } } }
public void WeaveAddOnLineTokenIn(string _s, Socket soc) { WeaveOnLine ol = new WeaveOnLine(); ol.Token = _s; ol.Socket = soc; weaveOnline.Add(ol); foreach (WeaveTCPCommandItem weaveTCPCommandItem in weaveTCPCommandItems) { try { weaveTCPCommandItem.WeaveTcpCmd.TokenIn(ol); } catch (Exception ex) { WeaveLogEvent?.Invoke("Tokenin", ex.Message); } } }
void P2ServerReceiveHander(byte command, string data, System.Net.Sockets.Socket soc) { try { if (command == 0xff) { WeaveExcCmdNoCheckCmdName(command, data, soc); try { string[] temp = data.Split('|'); if (temp[0] == "in") { //加入onlinetoken WeaveOnLine ol = new WeaveOnLine(); ol.Token = temp[1]; ol.Socket = soc; weaveOnline.Add(ol); foreach (CmdWorkItem CI in CmdWorkItems) { try { CI.WeaveTcpCmd.TokenIn(ol); } catch (Exception ex) { WeaveLogEvent?.Invoke("Tokenin", ex.Message); } } return; } else if (temp[0] == "Restart") { int count = weaveOnline.Count; WeaveOnLine[] ols = new WeaveOnLine[count]; weaveOnline.CopyTo(0, ols, 0, count); string IPport = ((System.Net.IPEndPoint)soc.RemoteEndPoint).Address.ToString() + ":" + temp[1]; foreach (WeaveOnLine ol in ols) { try { if (ol.Socket != null) { String IP = ((System.Net.IPEndPoint)ol.Socket.RemoteEndPoint).Address.ToString() + ":" + ((System.Net.IPEndPoint)ol.Socket.RemoteEndPoint).Port; if (IP == IPport) { ol.Socket = soc; } } } catch { } } } else if (temp[0] == "out") { ////移出onlinetoken int count = weaveOnline.Count; WeaveOnLine[] ols = new WeaveOnLine[count]; weaveOnline.CopyTo(0, ols, 0, count); foreach (WeaveOnLine onlinesession in ols) { if (onlinesession.Token == temp[1]) { foreach (CmdWorkItem cmdItem in CmdWorkItems) { try { cmdItem.WeaveTcpCmd.Tokenout(onlinesession); } catch (Exception ex) { WeaveLogEvent?.Invoke("Tokenout", ex.Message); } } weaveOnline.Remove(onlinesession); return; } } } } catch { } return; } else { WeaveExcCmd(command, data, soc); } } catch { return; } //System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(exec)); }