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 WeaveExecuteRuncommandMethod_Tokenout_RemoveWeaveOnline(Socket _soc)
 {
     try
     {
         int           count = weaveOnline.Count;
         WeaveOnLine[] ols   = new WeaveOnLine[count];
         weaveOnline.CopyTo(0, ols, 0, count);
         foreach (WeaveOnLine ol in ols)
         {
             if (ol.Socket.Equals(_soc))
             {
                 foreach (WeaveTCPCommandItem weaveTCPCommandItem in weaveTCPCommandItems)
                 {
                     try
                     {
                         WeaveExecuteRuncommandMethod(0xff, "out|" + ol.Token, ol.Socket);
                         weaveTCPCommandItem.WeaveTcpCmd.Tokenout(ol);
                     }
                     catch (Exception ex)
                     {
                         if (WeaveLogEvent != null)
                         {
                             WeaveLogEvent("Tokenout", ex.Message);
                         }
                     }
                 }
                 weaveOnline.Remove(ol);
                 return;
             }
         }
     }
     catch { }
 }
示例#3
0
        private void OnWeaveUpdateSocket(WeaveOnLine weaveOnLine)
        {
            SetServerReceiveText("Socket连接--触发了一次(OnWeaveUpdateSocket)" + Environment.NewLine);

            //有 Sokcet客户端连接到服务器的时候,暂未 账号,密码认证状态

            AddListBoxItemAction(connectedSocketItemList, CopyWeaveOnLineToMyListBoxItem(weaveOnLine));
        }
示例#4
0
        private void OnWeaveReceiveSocketMessage(byte command, string data, WeaveOnLine _socket)
        {
            WeaveSession ws = Newtonsoft.Json.JsonConvert.DeserializeObject <WeaveSession>(data);


            SetServerReceiveText("Socket发来数据--触发了一次(OnWeaveReceiveSocketMessage)" + Environment.NewLine);
            SetServerReceiveText("收到的数据为:  " + ws.Root + Environment.NewLine);
        }
        public void CallWeaveServerDeleteSocketCallBackEvent(Socket _soc)
        {
            WeaveOnLine online = weaveOnline.Find(s => s.Socket == _soc);

            if (online != null)
            {
                WeaveServerDeleteSocketCallBackEvent(online);
            }
        }
示例#6
0
        private void OnWeaveDeleteSocket(WeaveOnLine weaveOnLine)
        {
            SetServerReceiveText("Socket断开--退出事件--触发了一次(OnWeaveDeleteSocket)" + Environment.NewLine);

            RemoveListBoxItemAction(connectedSocketItemList, CopyWeaveOnLineToMyListBoxItem(weaveOnLine));

            MyListBoxItem oneItem = loginedUserList.Find(item => item.Ip == weaveOnLine.Socket.RemoteEndPoint.ToString());

            RemoveListBoxItemAction(loginedUserList, oneItem);
        }
示例#7
0
 void P2ServerDeleteSocketHander(System.Net.Sockets.Socket soc)
 {
     try
     {
         int           count  = CmdWorkItems.Count;
         CmdWorkItem[] cilist = new CmdWorkItem[count];
         CmdWorkItems.CopyTo(0, cilist, 0, count);
         foreach (CmdWorkItem CI in cilist)
         {
             try
             {
                 CI.WeaveTcpCmd.WeaveDeleteSocketEvent(soc);
             }
             catch (Exception ex)
             {
                 if (WeaveLogEvent != null)
                 {
                     WeaveLogEvent("EventDeleteConnSoc", ex.Message);
                 }
             }
         }
     }
     catch { }
     try
     {
         int           count = weaveOnline.Count;
         WeaveOnLine[] ols   = new WeaveOnLine[count];
         weaveOnline.CopyTo(0, ols, 0, count);
         foreach (WeaveOnLine ol in ols)
         {
             if (ol.Socket.Equals(soc))
             {
                 foreach (CmdWorkItem CI in CmdWorkItems)
                 {
                     try
                     {
                         WeaveExcCmdNoCheckCmdName(0xff, "out|" + ol.Token, ol.Socket);
                         CI.WeaveTcpCmd.Tokenout(ol);
                     }
                     catch (Exception ex)
                     {
                         if (WeaveLogEvent != null)
                         {
                             WeaveLogEvent("Tokenout", ex.Message);
                         }
                     }
                 }
                 weaveOnline.Remove(ol);
                 return;
             }
         }
     }
     catch { }
 }
        public WeaveOnLine CreatWeaveOnLine(string _token, Socket _socket)
        {
            WeaveOnLine ol = new WeaveOnLine()
            {
                Name   = DateTime.Now.ToString("yyyyMMddHHmmssfff"),
                Obj    = DateTime.Now.ToString("yyyyMMddHHmmssfff"),
                Socket = _socket,
                Token  = _token
            };

            return(ol);
        }
示例#9
0
        public MyListBoxItem CopyWeaveOnLineToMyListBoxItem(WeaveOnLine one)
        {
            MyListBoxItem item = new MyListBoxItem()
            {
                UIName_Id = one.Socket.RemoteEndPoint.ToString(),
                ShowMsg   = "UserIP:" + one.Socket.RemoteEndPoint.ToString() + " -Token:" + one.Token,
                UserName  = "******" + one.Socket.RemoteEndPoint.ToString(),
                Ip        = one.Socket.RemoteEndPoint.ToString()
            };

            return(item);
        }
 public void Check_ReceiveMessageCallBackEvent(byte command, string data, Socket _socket)
 {
     if (CheckIsOnLinePlayerMessage(_socket))
     {
         UnityPlayerOnClient player = unityPlayerOnClientList.Find(u => u.Socket == _socket);
         WeaveServerReceiveOnLineUnityPlayerMessageCallBackEvent(command, data, player);
     }
     else
     {
         WeaveOnLine onLine = weaveOnline.Find(w => w.Socket == _socket);
         WeaveServerReceiveSocketMessageCallBackEvent(command, data, onLine);
     }
 }
        void P2ServerUpdateSocketHander(System.Net.Sockets.Socket soc)
        {
            CallWeaveServerUpdateSocketCallBackEvent(soc);


            CallWeaveTCPCommandClassUpdateSocketEvent(soc);


            WeaveTcpToken token = TcpToken;
            {
                if (token.IsToken)
                {
                    //生成一个token,后缀带随机数
                    string Token = DateTime.Now.ToString("yyyyMMddHHmmssfff") + new Random().Next(1000, 9999);// EncryptDES(clientipe.Address.ToString() + "|" + DateTime.Now.ToString(), "lllssscc");
                    if (token.P2Server.Port == ((System.Net.IPEndPoint)soc.LocalEndPoint).Port)
                    {
                        //向客户端发送生成的token
                        bool sendok = false;
                        if (token.PortType == WeavePortTypeEnum.Bytes)
                        {
                            sendok = token.P2Server.Send(soc, 0xff, token.BytesDataparsing.Get_ByteBystring("token|" + Token + ""));
                        }
                        else
                        {
                            sendok = token.P2Server.Send(soc, 0xff, "token|" + Token + "");
                        }


                        #region  if(sendok) 如果发送token成功
                        if (sendok)
                        {
                            WeaveOnLine onLine = CreatWeaveOnLine(Token, soc);

                            AddWeaveOnLine(onLine);



                            ForeachWeaveExecuteRuncommandMethod(onLine);

                            return;
                        }
                        #endregion
                    }
                }
                else
                {
                    WeaveOnLine online = CreatWeaveOnLine(soc);
                    weaveOnline.Add(online);
                }
            }
        }
        public UnityPlayerOnClient ConvertWeaveOnlineToUnityPlayerOnClient(WeaveOnLine wonline)
        {
            UnityPlayerOnClient uplayer = new UnityPlayerOnClient()
            {
                Obj    = wonline.Obj,
                Socket = wonline.Socket,
                Token  = wonline.Token,
                Name   = wonline.Name
            };



            return(uplayer);
        }
        public void CallWeaveServerUpdateSocketCallBackEvent(Socket _soc)
        {
            WeaveOnLine online = weaveOnline.Find(s => s.Socket == _soc);

            if (online == null)
            {
                WeaveOnLine temponline = CreatWeaveOnLine(_soc);
                WeaveServerUpdateSocketCallBackEvent(temponline);
            }
            else
            {
                WeaveServerUpdateSocketCallBackEvent(online);
            }
        }
 public void AddWeaveOnLine(WeaveOnLine item)
 {
     WeaveOnLine hasOnline = weaveOnline.Find(w => w.Name == item.Name);
     {
         if (hasOnline != null)
         {
             weaveOnline.Remove(hasOnline);
             //添加修改参数后的WeaveOnLine
             weaveOnline.Add(item);
         }
         else
         {
             weaveOnline.Add(item);
         }
     }
 }
        private void OnUnityPlayerLoginOK(string _u, Socket _socket)
        {
            WeaveOnLine onLineSocket = weaveOnline.Find(w => w.Socket == _socket);

            // throw new NotImplementedException();
            UnityPlayerOnClient gamer = new UnityPlayerOnClient()
            {
                UserName = _u,
                isLogin  = true,
                Name     = onLineSocket.Name,
                Obj      = onLineSocket.Obj,
                Socket   = _socket,
                Token    = onLineSocket.Token
            };

            WeaveServerGetUnityPlayerOnLineCallBackEvent(gamer);
        }
 public void ForeachWeaveExecuteRuncommandMethod(WeaveOnLine onLine)
 {
     foreach (WeaveTCPCommandItem cmdItem in weaveTCPCommandItems)
     {
         try
         {
             WeaveExecuteRuncommandMethod(0xff, "in|" + onLine.Token, onLine.Socket);
             cmdItem.WeaveTcpCmd.TokenIn(onLine);
         }
         catch (Exception ex)
         {
             if (WeaveLogEvent != null)
             {
                 WeaveLogEvent("Tokenin", 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);
                }
            }
        }
        public bool CheckIsOnLinePlayerMessage(Socket _socket)
        {
            WeaveOnLine onLineSocket = weaveOnline.Find(w => w.Socket == _socket);

            if (unityPlayerOnClientList.Count == 0)
            {
                return(false);
            }
            else
            {
                UnityPlayerOnClient player = unityPlayerOnClientList.Find(u => u.Name == onLineSocket.Name);
                if (player != null)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
示例#19
0
        private void SendMsg_button_Click(object sender, RoutedEventArgs e)
        {
            string serverMsg      = InputSendMessage_textBox.Text;
            int    unityGamecount = weaveTCPcloud.unityPlayerOnClientList.Count;

            if (string.IsNullOrEmpty(serverMsg) || weaveTCPcloud.weaveOnline.Count == 0)
            {
                return;
            }

            WeaveOnLine[] _allWeaveOnLine = new WeaveOnLine[weaveTCPcloud.weaveOnline.Count];

            weaveTCPcloud.weaveOnline.CopyTo(_allWeaveOnLine);

            foreach (WeaveOnLine oneWeaveOnLine in _allWeaveOnLine)
            {
                weaveTCPcloud.P2Server.Send(oneWeaveOnLine.Socket, 0x01, "服务器主动给所有客户端发消息了: " + serverMsg);
            }

            // MessageBox.Show("客户端在线数量:"+ _allWeaveOnLine.Length);
        }
        public void RestartWeaveOnLineSocket(string _s, Socket _soc)
        {
            int count = weaveOnline.Count;

            WeaveOnLine[] ols = new WeaveOnLine[count];
            weaveOnline.CopyTo(0, ols, 0, count);
            string IPport = ((System.Net.IPEndPoint)_soc.RemoteEndPoint).Address.ToString() + ":" + _s;// 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 { }
            }
        }
示例#21
0
 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));
 }
示例#22
0
 void P2ServerUpdateSocketHander(System.Net.Sockets.Socket soc)
 {
     try
     {
         int           count  = CmdWorkItems.Count;
         CmdWorkItem[] cilist = new CmdWorkItem[count];
         CmdWorkItems.CopyTo(0, cilist, 0, count);
         foreach (CmdWorkItem CI in cilist)
         {
             try
             {
                 CI.WeaveTcpCmd.WeaveUpdateSocketEvent(soc);
             }
             catch (Exception ex)
             {
                 if (WeaveLogEvent != null)
                 {
                     WeaveLogEvent("EventUpdataConnSoc", ex.Message);
                 }
             }
         }
     }
     catch { }
     foreach (WeaveTcpToken token in TcpTokenList)
     {
         string Token = DateTime.Now.ToString("yyyyMMddHHmmssfff") + new Random().Next(1000, 9999);// EncryptDES(clientipe.Address.ToString() + "|" + DateTime.Now.ToString(), "lllssscc");
         if (token.P2Server.Port == ((System.Net.IPEndPoint)soc.LocalEndPoint).Port)
         {
             bool sendok = false;
             if (token.IsToken)
             {
                 if (token.PortType == WeavePortTypeEnum.Bytes)
                 {
                     sendok = token.P2Server.Send(soc, 0xff, token.BytesDataparsing.Get_ByteBystring("token|" + Token + ""));
                 }
                 else
                 {
                     sendok = token.P2Server.Send(soc, 0xff, "token|" + Token + "");
                 }
             }
             else
             {
                 sendok = true;
             }
             if (sendok)
             {
                 WeaveOnLine ol = new WeaveOnLine();
                 ol.Token  = Token;
                 ol.Socket = soc;
                 weaveOnline.Add(ol);
                 foreach (CmdWorkItem cmdItem in CmdWorkItems)
                 {
                     try
                     {
                         WeaveExcCmdNoCheckCmdName(0xff, "in|" + ol.Token, ol.Socket);
                         cmdItem.WeaveTcpCmd.TokenIn(ol);
                     }
                     catch (Exception ex)
                     {
                         if (WeaveLogEvent != null)
                         {
                             WeaveLogEvent("Tokenin", ex.Message);
                         }
                     }
                 }
                 return;
             }
         }
     }
 }
示例#23
0
        public void login(Socket soc, WeaveSession _0x01)
        {
            WeaveOnLine ol = GetOnLineByToken(_0x01.Token);

            ol.Name = "客户";
        }