Exemple #1
0
        private void PushLocalBuffer(byte[] buffer, int offset, int count)
        {
            if ((_ReceiveOffset + count) > _ReceiveBuffer.Length)
            {
                throw new Exception("客户端信息数据超出当前接收缓存大小!");
            }

            Array.Copy(buffer, offset, _ReceiveBuffer, _ReceiveOffset, count);

            _ReceiveOffset += count;

            Console.WriteLine("添加数据缓存 当前缓存长度:{0}", _ReceiveOffset);

            List <byte[]> messagebuffers = MessageCoding.MessageDecoding(ref _ReceiveBuffer, ref _ReceiveOffset);

            foreach (var mm in messagebuffers)
            {
                Console.WriteLine("提取报文信息");

                MemoryStream ms = new MemoryStream(mm, 0, mm.Length);

                CMD_LG_CTL_REGIST mss2 = Serializer.Deserialize <CMD_LG_CTL_REGIST>(ms);

                Console.WriteLine("account:{0},code:{1},psd:{2}", mss2.account, mss2.code, mss2.psw);
            }
        }
        /// <summary>
        /// 单击控件,弹出消息的确认提示框
        /// </summary>
        /// <param name="control">控件</param>
        /// <param name="message">提示消息</param>
        public static void ShowConfirmDialog(System.Web.UI.WebControls.WebControl control, string m)
        {
            MessageCoding mc = new MessageCoding(true);
            //通过代码得到消息内容
            string message = mc[m];

            control.Attributes.Add("onclick", "return confirm('" + message + "');");
        }
        /// <summary>
        /// 在页面中,显示消息提示对话框,并进行页面跳转
        /// </summary>
        /// <param name="page">页面</param>
        /// <param name="message">提示信息</param>
        /// <param name="url">目标URL</param>
        public static void ShowDialogAndRedirect(System.Web.UI.Page page, string m, string url)
        {
            MessageCoding mc = new MessageCoding(true);
            //通过代码得到消息内容
            string message = mc[m];

            page.ClientScript.RegisterStartupScript(page.GetType(),
                                                    "message", "<script language='javascript' defer>alert('" + message + "');window.location=\"" + url + "\"</script>");
        }
        /// <summary>
        /// 提示弹出框,点确定后关闭,并刷新父窗体
        /// </summary>
        /// <param name="page">页面</param>
        /// <param name="title">标题</param>
        /// <param name="message">内容</param>
        public static void YMPromptDialogAndFreshParentPage(System.Web.UI.Page page, string t, string m)
        {
            MessageCoding mc = new MessageCoding(true);
            ///通过代码得到消息标题
            string title = mc[t];
            //通过代码得到消息内容
            string message = mc[m];

            page.ClientScript.RegisterStartupScript(page.GetType(),
                                                    "message", "<script language='javascript' >ymPrompt.setDefaultCfg({ autoClose: false ,iframe:false}); ymPrompt.alert('"
                                                    + message + "',  220, 130, '" + title + "', function(tp) { try{ parent.ymPrompt.close(); parent.window.location.href = parent.window.location.href;}catch(err){ ymPrompt.close(); window.location.href = window.location.href;} return false;});</script>");
        }
        /// <summary>
        /// 弹出一个对话框,并在该对话框中显示指定页面的内容
        /// </summary>
        /// <param name="page">页面</param>
        /// <param name="title">标题</param>
        /// <param name="pageUrl">内容页面的Url</param>
        /// <param name="width">宽度</param>
        /// <param name="height">高度</param>
        public static void YMPromptParentShowPageContentDialog(System.Web.UI.Page page,
                                                               string t, string pageUrl, int width, int height)
        {
            MessageCoding mc = new MessageCoding(true);
            ///通过代码得到消息标题
            string title = mc[t];

            page.ClientScript.RegisterStartupScript(page.GetType(),
                                                    "message",
                                                    "<script language='javascript' >ymPrompt.setDefaultCfg({iframe:true}); parent.ymPrompt.win('"
                                                    + pageUrl + "'," + width + "," + height + ",'" + title + "');</script>");
        }
        /// <summary>
        /// 显示消息提示对话框
        /// </summary>
        /// <param name="page">页面</param>
        /// <param name="title">标题</param>
        /// <param name="message">提示消息</param>
        public static void YMPromptShowDialog(System.Web.UI.Page page, string t, string m)
        {
            MessageCoding mc = new MessageCoding(true);
            ///通过代码得到消息标题
            string title = mc[t];
            //通过代码得到消息内容
            string message = mc[m];

            page.ClientScript.RegisterStartupScript(page.GetType(),
                                                    "message",
                                                    "<script language='javascript' >ymPrompt.setDefaultCfg({iframe:false}); ymPrompt.alert({title:'" + title + "',message:'" + message + "',height:130,width:220});</script>");
        }
        /// <summary>
        /// 发送
        /// </summary>
        public void Write(UserToken token, byte Type, byte area, byte command, object message)
        {
            SocketModel model = new SocketModel();

            model.Type    = Type;
            model.Area    = area;
            model.command = command;
            model.message = message;
            byte[] result = MessageCoding.encode(model);
            result = LengthCoding.EnCode(result);
            token.Writed(result);
        }
        public static void YMPromptShowDialogWithEdit(System.Web.UI.Page page, string t, string m)
        {
            MessageCoding mc = new MessageCoding(true);
            ///通过代码得到消息标题
            string title = mc[t];
            //通过代码得到消息内容
            string message = mc[m];

            page.ClientScript.RegisterStartupScript(page.GetType(),
                                                    "message",
                                                    "<script language='javascript' >ymPrompt.setDefaultCfg({ iframe:false,autoClose: false }); ymPrompt.alert('"
                                                    + message + "',  220, 130, '" + title + "', function(tp) { if (tp == 'ok') {  history.go(-2); } else { history.go(-2);} return false;});</script>");
        }
        /// <summary>
        /// 显示只包含提示信息的弹出框,并设置对话框的高度和宽度
        /// </summary>
        /// <param name="page">页面</param>
        /// <param name="title">标题</param>
        /// <param name="content">内容</param>
        /// <param name="width">宽度</param>
        /// <param name="height">高度</param>
        public static void YMPromptShowContentDialog(System.Web.UI.Page page,
                                                     string t, string m, int width, int height)
        {
            MessageCoding mc = new MessageCoding(true);
            ///通过代码得到消息标题
            string title = mc[t];
            //通过代码得到消息内容
            string Content = mc[m];

            page.ClientScript.RegisterStartupScript(page.GetType(),
                                                    "message",
                                                    "<script language='javascript' >ymPrompt.setDefaultCfg({iframe:false}); ymPrompt.win({message:'"
                                                    + Content + "',width:" + width + ",height:" + height + ",msgCls:'ym-content',title:'" + title + "'});</script>");
        }
        /// <summary>
        /// 在页面中,显示消息提示对话框,并进行页面跳转到顶级页面(Target的值为top)
        /// </summary>
        /// <param name="page">页面</param>
        /// <param name="message">提示信息</param>
        /// <param name="url">目标URL</param>
        public static void ShowDialogAndTopRedirect(System.Web.UI.Page page, string m, string url)
        {
            MessageCoding mc = new MessageCoding(true);
            //通过代码得到消息内容
            string message = mc[m];

            StringBuilder sbScriptString = new StringBuilder();

            sbScriptString.Append("<script language='javascript' defer>");
            sbScriptString.AppendFormat("alert('{0}');", message);
            sbScriptString.AppendFormat("top.location.href='{0}'", url);
            sbScriptString.Append("</script>");
            page.ClientScript.RegisterStartupScript(page.GetType(), "message", sbScriptString.ToString());
        }
Exemple #11
0
        static void CreatOneConnect()
        {
            try
            {
                int        port = 2012;
                string     host = "127.0.0.1";
                IPAddress  ip   = IPAddress.Parse(host);
                IPEndPoint ipe  = new IPEndPoint(ip, port);                                                    //把ip和端口转化为IPEndPoint实例
                Socket     c    = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //创建一个Socket
                Console.WriteLine("Conneting...");
                c.Connect(ipe);                                                                                //连接到服务器


                CMD_LG_CTL_REGIST rep = new CMD_LG_CTL_REGIST();
                rep.account = "root";
                rep.code    = "bsadsdfasf";
                rep.psw     = "123456";

                MemoryStream ms = new MemoryStream();
                Serializer.Serialize <CMD_LG_CTL_REGIST>(ms, rep);

                byte[] entityData = ms.ToArray();


                byte[] messagedate = MessageCoding.MessageEncoding(entityData);


                c.Send(messagedate, messagedate.Length, 0);
                c.Send(messagedate, messagedate.Length, 0);
                c.Send(messagedate, messagedate.Length, 0);
                c.Send(messagedate, messagedate.Length, 0);
                c.Send(messagedate, messagedate.Length, 0);
                c.Send(messagedate, messagedate.Length, 0);



                //for (int i = 0; i < 3; i++)
                //{
                //    string sendStr = "hello!This is a socket test";
                //    byte[] bs = Encoding.ASCII.GetBytes(sendStr);
                //    Console.WriteLine("Send Message");
                //    c.Send(bs, bs.Length, 0);//发送测试信息
                //    string recvStr = "";
                //    byte[] recvBytes = new byte[1024];
                //    int bytes;
                //    bytes = c.Receive(recvBytes, recvBytes.Length, 0);//从服务器端接受返回信息
                //    recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
                //    Console.WriteLine("Client Get Message:{0}", recvStr);//显示服务器返回信息
                //}

                Console.Write("断开连接");
                //c.Close();
            }
            catch (ArgumentNullException e)
            {
                Console.WriteLine("ArgumentNullException: {0}", e);
            }
            catch (SocketException e)
            {
                Console.WriteLine("SocketException: {0}", e);
            }
        }
        /// <summary>
        /// Splits a message into byte arrays taking the characters into account.
        /// ASCII or Unicode are treated differently.
        /// </summary>
        /// <param name="message"></param>
        /// <param name="coding"></param>
        /// <returns></returns>
        public static byte[][] SplitMessage(string message, out MessageCoding coding)
        {
            coding = MessageCoding.GSM8;
            decimal parts      = 1;
            var     part       = 1;
            var     chars_used = 0;
            var     chars_sms  = 160;

            // find the message coding.
            foreach (var m in message.Trim())
            {
                if (Charset7Bit.Any(c => c == m))
                {
                    chars_used = chars_used + 1;
                }
                else if (Charset7BitExt.Any(c => c == m))
                {
                    chars_used = chars_used + 2;
                }
                else
                {
                    coding     = MessageCoding.Unicode;
                    chars_used = message.Length;
                    break;
                }
            }

            var fixedString = message.Trim();                                                        //AppendEscToAllExtended(message.Trim());
            var textBytes   = GetBytes(fixedString);
            int maximumMultipartMessageSegmentSize = ((coding == MessageCoding.Unicode) ? 67 : 134); // number of characters

            byte[]   byteSingleMessage = textBytes;
            byte[][] byteMessagesArray = null;//SplitUnicodeMessage(byteSingleMessage, maximumMultipartMessageSegmentSize);

            if (coding == MessageCoding.GSM8)
            {
                if (chars_used > 160)
                {
                    // split
                    byteMessagesArray = SplitUnicodeMessage(byteSingleMessage, maximumMultipartMessageSegmentSize);
                }
                else
                {
                    // normal
                    byte[][] segments = new byte[1][];
                    segments[0]       = byteSingleMessage;
                    byteMessagesArray = segments;
                }
            }
            else
            {
                if (chars_used > 70)
                {
                    byteMessagesArray = SplitUnicodeMessage(byteSingleMessage, maximumMultipartMessageSegmentSize);
                }
                else
                {
                    // normal
                    byte[][] segments = new byte[1][];
                    segments[0]       = byteSingleMessage;
                    byteMessagesArray = segments;
                }
            }

            return(byteMessagesArray);
        }