Exemple #1
0
        private void Form1_Load(object sender, EventArgs e)
        {
            _connString        = SystemSettingBase.CreateInstance().SysMySqlDB.ConnString;
            ConnString.MySqldb = _connString;

            string url  = "tcp://localhost:61616";
            string User = "";
            string Pwd  = "";

            helper = new ActiveMQHelper(url, User, Pwd);
            helper.CreateFactory();
        }
Exemple #2
0
        public void ReceiveData(object newclient)
        {
            TcpClient client = newclient as TcpClient; // 一个接入的对象

            if (client == null)
            {
                return;
            }
            while (true)
            {
                if (!client.Connected || (client.Client.Poll(20, SelectMode.SelectRead) &&
                                          client.Available == 0))
                {
                    LogWriter.Info($"来自 {client.Client.RemoteEndPoint} 的连接断开");
                    client.Close();
                    return;
                }
                //在接收数据时,如果可读字节流是 0 ,则跳过
                if (client.Available < 1)
                {
                    continue;
                }
                //因为有包粘连,所以一次尽可能读取长的字节
                //而非读取一部分,其它留在缓冲区
                byte[] buffer = new byte[client.Available];
                try
                {
                    var stream = client.GetStream();
                    var read   = new BinaryReader(stream);
                    buffer = read.ReadBytes(buffer.Length);
                    ActiveMQHelper.InsertMQ(buffer); //插入MQ

                    var clientsync = new ClientSync();
                    clientsync.ClientsOnline(buffer, stream); // 响应上线
                }
                catch (SocketException ex)
                {
                    // 当对方主动断开链接时,ReadBytes 会报错,此时断开链接
                    LogWriter.Info($"来自 {client.Client.RemoteEndPoint} 的连接断开");
                    LogWriter.Error(ex.ToString());
                    client.Close();
                    return;
                }
                catch (Exception ex)
                {
                    LogWriter.Error("发生未知错误 : ");
                    LogWriter.Error(ex.ToString());
                    client.Close();
                    return;
                }
            }
        }
Exemple #3
0
        static void Main(string[] args)
        {
            Console.WriteLine("命令:");
            Console.WriteLine("1. cancel 用户1 用户2   ");
            Console.WriteLine("2. exit     ");
            Console.WriteLine("3. >内容     ");
            Console.WriteLine("请输入发送的消息内容:");
            while (true)
            {
                string textMsg = Console.ReadLine();
                if (textMsg.StartsWith(">"))
                {
                    ActiveMQHelper.SendTopicMessage(new AQConfig()
                    {
                        ActiveMQName = "testaq"
                    }, textMsg.TrimStart('>'));
                }
                else
                {
                    string[] strArr = textMsg.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
                    switch (strArr[0].ToLower())
                    {
                    case "exit":
                        break;

                    case "cancel":
                        if (strArr.Length > 1)
                        {
                            for (int i = 1; i < strArr.Length; i++)
                            {
                                ActiveMQHelper.CancelSubscriberTopic(strArr[i], (m) =>
                                {
                                    Console.WriteLine(m.custom + "已取消订阅");
                                });
                            }
                        }
                        break;

                    default:
                        break;
                    }
                }
            }
            Console.ReadLine();
        }
Exemple #4
0
        static void Main(string[] args)
        {
            int userCount = 0;

            while (userCount < 10)
            {
                string strUser = "******" + new Random().Next(1, 30);
                ActiveMQHelper.SubscriberTopic(new AQConfig()
                {
                    ActiveMQName = "testaq"
                },
                                               strUser,
                                               (m) =>
                {
                    var msg = ((ITextMessage)m.IMessage);
                    Console.WriteLine(m.custom + "Receive: " + msg.Text);
                });
                Console.WriteLine("用户: " + strUser + "订阅");
                Thread.Sleep(5 * 1000);
            }
            Console.ReadLine();
        }