Пример #1
0
    public void LoadFromFile(string strFileName)
    {
        TextAsset file = (TextAsset)(Resources.Load(strFileName, typeof(TextAsset)));

        if (file == null)
        {
            FDebug.LogError("载入TBL文件出错:" + strFileName);
        }

        string text = file.text;

        string[] vals        = text.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
        int      nLineCounts = vals.Length;

        int nContentLineCounts = 0;

        for (int nIdx = 0; nIdx < nLineCounts; nIdx++)
        {
            if (!(vals[nIdx].StartsWith("//")))
            {
                BuildLineCell(vals[nIdx], nIdx);
                nContentLineCounts++;
            }
        }

        if (nContentLineCounts > 1)
        {
            GotoLineByIndex(0);
        }
    }
 public void AsyncAccept(IAsyncResult Ar)
 {
     try
     {
         Socket socket = Server_Socket.EndAccept(Ar);
         int    Index  = Get_Connect_Index();
         if (Index < 0)
         {
             socket.Close();
             FDebug.Log("警告:连接已满");
         }
         else
         {
             Connect connect = connects[Index];
             connect.Init(socket);
             FDebug.Log("与{0}建立连接", connect.GetAddress());
             connect.Connect_Socket.BeginReceive(connect.Buffers, connect.buffCount, connect.BuffRemain(), SocketFlags.None, AsyncReceiveCb, connect);
         }
         Server_Socket.BeginAccept(AsyncAccept, null);
     }
     catch (Exception e)
     {
         FDebug.Log("AsyncAccept失败 :" + e.Message);
     }
 }
Пример #3
0
    public static void test_push()
    {
        Heap <Testobj> test_heap = new Heap <Testobj>();

        test_heap.Insert(new Testobj(9));
        test_heap.Insert(new Testobj(2));
        test_heap.Insert(new Testobj(6));
        test_heap.Insert(new Testobj(7));
        test_heap.Insert(new Testobj(3));
        test_heap.Insert(new Testobj(4));

        Testobj t1 = test_heap.Remove();

        FDebug.LogError("" + t1.v);

        t1 = test_heap.Remove();
        FDebug.LogError("" + t1.v);

        t1 = test_heap.Remove();
        FDebug.LogError("" + t1.v);

        t1 = test_heap.Remove();
        FDebug.LogError("" + t1.v);

        t1 = test_heap.Remove();
        FDebug.LogError("" + t1.v);
    }
Пример #4
0
 public bool CheckRights(SystemRights netRights)
 {
     if (netRights == SystemRights.root || netRights == SystemRights.Admin || netRights == Rights)
     {
         return(true);
     }
     FDebug.Log("没有访问权限");
     return(false);
 }
Пример #5
0
 public void Close()
 {
     if (!State_IsUSE)
     {
         return;
     }
     FDebug.Log("断开连接:" + GetAddress());
     Connect_Socket.Close();
     State_IsUSE = false;
 }
        /// <summary>
        /// 数据传送
        /// </summary>
        /// <param name="bs"></param>
        private void DataTransfer(byte[] bs, Connect connect)
        {
            ///
            ///待完善
            FDebug.Log("接收完成共{0}byte数据 From:{1}", bs.Length, connect.GetAddress());
            SocketCall?.Invoke(bs);

            //数据解密
            // IPC.GetInstance().InComing_DATA(bs, connect);
        }
 /// <summary>
 /// 对从网络缓冲区拿到的数据得处理函数
 /// </summary>
 /// <param name="connect">连接类的实例</param>
 private void PossingData(Connect connect)
 {
     if (connect.buffCount < sizeof(Int32))
     {
         connect.Connect_Socket.BeginReceive(connect.Buffers, connect.buffCount, connect.BuffRemain(), SocketFlags.None, AsyncReceiveCb, connect);
     }
     else
     {
         Int32 MessageLen = BitConverter.ToInt32(connect.Buffers, 0);//取包头获取单个数据包长度
         if (connect.buffCount < sizeof(Int32) + MessageLen && connect.buffCount < Connect.BUFFERS_SIZE)
         {
             connect.Connect_Socket.BeginReceive(connect.Buffers, connect.buffCount, connect.BuffRemain(), SocketFlags.None, AsyncReceiveCb, connect);
         }
         else if (connect.buffCount < sizeof(Int32) + MessageLen && Connect.BUFFERS_SIZE < sizeof(Int32) + MessageLen)
         {
             try
             {
                 MemoryStream stream = new MemoryStream();
                 stream.Write(connect.Buffers, sizeof(Int32), connect.buffCount - sizeof(Int32));
                 connect.MessageLenght = MessageLen;
                 connect.BufferStream  = stream;
                 connect.RestBuffCount();
                 connect.Connect_Socket.BeginReceive(connect.Buffers, connect.buffCount, connect.StreamBuffLen(), SocketFlags.None, SubReceiveCb, connect);
             }
             catch (Exception e)
             {
                 FDebug.Log(e.Message + "  :分包接收");
             }
         }
         else
         {
             try
             {
                 byte[] data = new byte[MessageLen];
                 Array.Copy(connect.Buffers, sizeof(Int32), data, 0, MessageLen);
                 DataTransfer(data, connect);
                 connect.buffCount -= (MessageLen + sizeof(Int32));
                 if (connect.buffCount > 0)
                 {
                     Array.Copy(connect.Buffers, sizeof(Int32) + MessageLen, connect.Buffers, 0, connect.buffCount);
                     PossingData(connect);
                 }
                 else
                 {
                     connect.Connect_Socket.BeginReceive(connect.Buffers, connect.buffCount, connect.BuffRemain(), SocketFlags.None, AsyncReceiveCb, connect);
                 }
             }
             catch (Exception e)
             {
                 FDebug.Log(e.Message + " pd");
             }
         }
     }
 }
Пример #8
0
 private void PossingData()
 {
     if (buffCount < sizeof(Int32))
     {
         socket.BeginReceive(Buffers, buffCount, BuffRemain(), SocketFlags.None, AsyncReceiveCb, this);
     }
     else
     {
         Int32 MessageLen = BitConverter.ToInt32(Buffers, 0);//取包头获取单个数据包长度
         if (buffCount < sizeof(Int32) + MessageLen && buffCount < BUFFERS_SIZE)
         {
             socket.BeginReceive(Buffers, buffCount, BuffRemain(), SocketFlags.None, AsyncReceiveCb, this);
         }
         else if (buffCount < sizeof(Int32) + MessageLen && BUFFERS_SIZE < sizeof(Int32) + MessageLen)
         {
             try
             {
                 MemoryStream stream = new MemoryStream();
                 stream.Write(Buffers, sizeof(Int32), buffCount - sizeof(Int32));
                 MessageLenght = MessageLen;
                 BufferStream  = stream;
                 RestBuffCount();
                 socket.BeginReceive(Buffers, buffCount, StreamBuffLen(), SocketFlags.None, SubReceiveCb, this);
             }
             catch (Exception e)
             {
                 FDebug.Log(e.Message + "  :分包接收");
             }
         }
         else
         {
             try
             {
                 byte[] data = new byte[MessageLen];
                 Array.Copy(Buffers, sizeof(Int32), data, 0, MessageLen);
                 DataTransfer(data);
                 buffCount -= (MessageLen + sizeof(Int32));
                 if (buffCount > 0)
                 {
                     Array.Copy(Buffers, sizeof(Int32) + MessageLen, Buffers, 0, buffCount);
                     PossingData();
                 }
                 else
                 {
                     socket.BeginReceive(Buffers, buffCount, BuffRemain(), SocketFlags.None, AsyncReceiveCb, this);
                 }
             }
             catch (Exception e)
             {
                 FDebug.Log(e.Message + " pd");
             }
         }
     }
 }
Пример #9
0
 public void Release(T element)
 {
     if (m_Stack.Count > 0 && ReferenceEquals(m_Stack.Peek(), element))
     {
         FDebug.LogError("Internal error. Trying to destroy object that is already released to pool.");
     }
     if (m_ActionOnRelease != null)
     {
         m_ActionOnRelease(element);
     }
     m_Stack.Push(element);
 }
Пример #10
0
        public void CheckCommand()
        {
            string Commend  = Console.ReadLine();
            var    function = Fursion_CSharpTools.CSharpTools.GetMethodDo <ServiceCommand>(Commend);

            if (function != null)
            {
                function.Invoke(this, null);
            }
            else
            {
                FDebug.Log(@"Not found this ""{0}"" command", Commend);
            }
        }
Пример #11
0
 public int MStreamDispose()
 {
     try
     {
         BufferStream.Close();
         BufferStream.Dispose();
         MessageLenght = 0;
         return(1);
     }catch (Exception e)
     {
         FDebug.Log(e.Message);
         return(-1);
     }
 }
Пример #12
0
        public void Connect(string HOST, int PORT)
        {
            socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPAddress iP = IPAddress.Parse(HOST);

            try
            {
                socket.Connect(iP, PORT);
                socket.BeginReceive(Buffers, 0, BUFFERS_SIZE, SocketFlags.None, AsyncReceiveCb, null);
            }
            catch (SocketException se)
            {
                FDebug.Log(se.Message);
            }
        }
        /// <summary>
        /// 自动获取IP地址的启动函数
        /// </summary>
        /// <param name="Port"></param>
        /// <param name="callBack"></param>
        /// <returns></returns>
        public int StarServer(int Port, SocketCallBack callBack)
        {
            Server_Socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            connects      = new Connect[MAX_CONNECT_NUMBERS];
            IPEndPoint iPEnd = new IPEndPoint(IPAddress.Any, Port);

            if (callBack != null)
            {
                SocketCall += callBack;
            }
            Server_Socket.Bind(iPEnd);
            Server_Socket.Listen(10);
            Server_Socket.BeginAccept(AsyncAccept, null);
            FDebug.Log(iPEnd.Address.ToString());
            return(1);
        }
        /// <summary>
        /// 创建连接实例
        /// </summary>
        /// <param name="SQLConnectionStatement"></param>
        /// <returns></returns>
        public static MySqlConnection ConnectSQL(string SQLConnectionStatement)
        {
            FDebug.Log("连接数据库中...");
            MySqlConnection SqlConnect = new MySqlConnection(SQLConnectionStatement);

            try
            {
                SqlConnect.Open();
                FDebug.Log("成功连接到数据库");
                return(SqlConnect);
            }
            catch (MySqlException SqlEx)
            {
                FDebug.Log("连接数据库失败: {0}", SqlEx.Message);
                return(SqlConnect);
            }
        }
        /// <summary>
        /// 自定义端口的启动函数
        /// </summary>
        /// <param name="IP"></param>
        /// <param name="Port"></param>
        /// <param name="callBack"></param>
        public void StarServer(string IP, int Port, SocketCallBack callBack)
        {
            FDebug.Log("Service starting...");
            Server_Socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            connects      = new Connect[MAX_CONNECT_NUMBERS];
            IPEndPoint iPEnd = new IPEndPoint(IPAddress.Parse(IP), Port);

            if (callBack != null)
            {
                SocketCall += callBack;
            }
            Server_Socket.Bind(iPEnd);
            Server_Socket.Listen(10);
            Server_Socket.BeginAccept(AsyncAccept, null);
            FDebug.Log("ServiceAddressIp:{0}", iPEnd.Address.ToString());
            FDebug.Log("Service started Successfully!");
        }
Пример #16
0
    //从绝对路径加载TBL
    public void LoadFromFileabAolutePath(string strFileName)
    {
        FileStream fs = new FileStream(strFileName, FileMode.Open);

        if (fs == null)
        {
            FDebug.LogWarning("ServerConfig.config read failed");
            return;
        }
        byte[] pByte = new byte[fs.Length];
        fs.Read(pByte, 0, pByte.Length);
        fs.Close();

        //内容解密
        string szContent = Encoding.Unicode.GetString(pByte);

        LoadFromFileContent(szContent);
    }
        /// <summary>
        /// 增量接收
        /// </summary>
        /// <param name="ar"></param>
        private void SubReceiveCb(IAsyncResult ar)
        {
            Connect connect = (Connect)ar.AsyncState;

            try
            {
                int count = connect.Connect_Socket.EndReceive(ar);
                connect.buffCount = count;
                if (count < 0)
                {
                    connect.Close();
                }
                else if (count == 0)
                {
                    connect.MStreamDispose();
                    connect.Connect_Socket.BeginReceive(connect.Buffers, connect.buffCount, connect.BuffRemain(), SocketFlags.None, AsyncReceiveCb, connect);
                }
                else
                {
                    connect.BufferStream.Write(connect.Buffers, 0, connect.buffCount);
                    if (connect.MessageLenght == connect.BufferStream.Length)
                    {
                        var bs = connect.BufferStream.ToArray();
                        DataTransfer(bs, connect);
                        connect.MStreamDispose();
                        connect.RestBuffCount();
                        connect.Connect_Socket.BeginReceive(connect.Buffers, connect.buffCount, connect.BuffRemain(), SocketFlags.None, AsyncReceiveCb, connect);
                    }
                    else if (connect.MessageLenght > connect.BufferStream.Length)
                    {
                        connect.RestBuffCount();
                        connect.Connect_Socket.BeginReceive(connect.Buffers, connect.buffCount, connect.StreamBuffLen(), SocketFlags.None, SubReceiveCb, connect);
                    }
                    else
                    {
                        FDebug.Log("MS < s.lenght");
                    }
                }
            }
            catch (Exception e)
            {
                FDebug.Log(e.Message + "SubReceiveCb  err");
            }
        }
Пример #18
0
 /// <summary>
 /// 增量接收
 /// </summary>
 /// <param name="ar"></param>
 private void SubReceiveCb(IAsyncResult ar)
 {
     try
     {
         int count = socket.EndReceive(ar);
         FDebug.Log("收到{0}个byte数据", count);
         buffCount = count;
         if (count < 0)
         {
             Close();
         }
         else if (count == 0)
         {
             MStreamDispose();
             socket.BeginReceive(Buffers, buffCount, BuffRemain(), SocketFlags.None, AsyncReceiveCb, this);
         }
         else
         {
             BufferStream.Write(Buffers, 0, buffCount);
             if (MessageLenght == BufferStream.Length)
             {
                 var bs = BufferStream.ToArray();
                 DataTransfer(bs);
                 MStreamDispose();
                 RestBuffCount();
                 socket.BeginReceive(Buffers, buffCount, BuffRemain(), SocketFlags.None, AsyncReceiveCb, this);
             }
             else if (MessageLenght > BufferStream.Length)
             {
                 socket.BeginReceive(Buffers, buffCount, StreamBuffLen(), SocketFlags.None, SubReceiveCb, this);
             }
             else
             {
                 FDebug.Log("MS < s.lenght");
             }
         }
     }
     catch (Exception e)
     {
         FDebug.Log(e.Message + "Sub err");
     }
 }
Пример #19
0
 private void AsyncReceiveCb(IAsyncResult Ar)
 {
     try
     {
         int count = socket.EndReceive(Ar);
         FDebug.Log("接收到" + count + ":{0}个字节的数据", count);
         if (count < 0)
         {
             //有待修改
             Close();
         }
         buffCount += count;
         PossingData();
     }
     catch (Exception e)
     {
         FDebug.Log(" :连接异常 已经断开");
         FDebug.Log(e.Message + "  From:  ServerMain.AsyncReceiveCb");
         Close();
     }
 }
        /// <summary>
        /// 异步接收回调
        /// </summary>
        /// <param name="Ar"></param>
        private void AsyncReceiveCb(IAsyncResult Ar)
        {
            Connect connect = (Connect)Ar.AsyncState;

            try
            {
                int count = connect.Connect_Socket.EndReceive(Ar);
                if (count < 0)
                {
                    //有待修改
                    connect.Close();
                }
                connect.buffCount += count;
                PossingData(connect);
            }
            catch (Exception e)
            {
                FDebug.Log(connect.GetAddress() + " :连接异常 已经断开");
                FDebug.Log(e.Message + "  from:  ServerMain.AsyncReceiveCb");
                connect.Close();
            }
        }
Пример #21
0
 string IJobTaskGet <string> .Execute(object obj)
 {
     try
     {
         MailMessage mailMsg = new MailMessage();
         mailMsg.From = new MailAddress("*****@*****.**", "fursion");
         mailMsg.To.Add(new MailAddress(Addressee));
         //mailMsg.CC.Add("抄送人地址");
         //mailMsg.Bcc.Add("密送人地址");
         //可选,设置回信地址
         mailMsg.ReplyToList.Add("*****@*****.**");
         // 邮件主题
         mailMsg.Subject = Subject;
         // 邮件正文内容
         //mailMsg.Body = MailText;
         mailMsg.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(MailText, null, MediaTypeNames.Text.Html));
         mailMsg.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(MailHtml, null, MediaTypeNames.Text.Html));
         // 添加附件
         if (System.IO.File.Exists(File))
         {
             Attachment data = new Attachment(File, MediaTypeNames.Application.Octet);
             mailMsg.Attachments.Add(data);
         }
         //邮件推送的SMTP地址和端口
         SmtpClient smtpClient = new SmtpClient("mail.fursion.cn", 25);
         //smtpClient.EnableSsl = true;
         // 使用SMTP用户名和密码进行验证
         System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("*****@*****.**", "dj970619");
         smtpClient.Credentials = credentials;
         smtpClient.Send(mailMsg);
         return("send successfuly");
     }
     catch (Exception ex)
     {
         FDebug.Log(ex.ToString());
         return(ex.Message);
     }
 }
Пример #22
0
    /// <summary>
    /// Converting colors from hexadecimal to rgba color
    /// </summary>
    public static Color32 HexToColor(string hex)
    {
        if (string.IsNullOrEmpty(hex))
        {
            FDebug.LogRed("Trying convert from hex to color empty string!");
            return(Color.white);
        }

        uint rgba = 0x000000FF;

        hex = hex.Replace("#", "");
        hex = hex.Replace("0x", "");

        if (!uint.TryParse(hex, System.Globalization.NumberStyles.HexNumber, null, out rgba))
        {
            Debug.Log("Error during converting hex string.");
            return(Color.white);
        }

        return(new Color32((byte)((rgba & -16777216) >> 0x18),
                           (byte)((rgba & 0xff0000) >> 0x10),
                           (byte)((rgba & 0xff00) >> 8),
                           (byte)(rgba & 0xff)));
    }
Пример #23
0
 private void Awake()
 {
     Log = this;
 }
Пример #24
0
 public void Execute(object obj)
 {
     FDebug.Log("{0}   线程ID:{1}", i, Thread.CurrentThread.ManagedThreadId);
 }
Пример #25
0
 public void Execute(object obj)
 {
     FDebug.Log("jobTask test");
 }
Пример #26
0
 public static void SocketCall(byte[] bs)
 {
     FDebug.Log("收到信号");
 }
Пример #27
0
 public void CallBack(object obj)
 {
     FDebug.Log(((Task)obj).Status.ToString());
 }
Пример #28
0
 public void CallBack(object obj)
 {
     FDebug.Log("回调 {0}  线程ID:{1}", i * i, Thread.CurrentThread.ManagedThreadId);
 }
Пример #29
0
 public int Execute(object obj)
 {
     FDebug.Log("执行任务");
     return(Thread.CurrentThread.ManagedThreadId * i);
 }