首页 > 其他分享 >netmq测试

netmq测试

时间:2024-08-03 16:40:13浏览次数:13  
标签:File netmq Text DateTime 测试 new byte buf

说明:

经对最新版本4.0.1.13测试。请示/响应和推拉模式都是并行的,哪个先传输完成先响应

发布订阅时好像不支持中文topic,没仔细测试

网上有说发布订阅是在客户端处理,在客户端判断是否符合,会有大量无效流量,经测试并非如此,如果不是本地订阅的topic则不会传输到本客户端。

        PublisherSocket publisher;
        SubscriberSocket sub;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //发布
            if (this.publisher == null)
            {
                publisher = new PublisherSocket("tcp://*:3307");
            }
            byte[] buf = File.ReadAllBytes("video.rar");
            //publisher.SendMoreFrame("123").SendFrame("123");
            publisher.SendMoreFrame("123").SendFrame(buf);  //topic好像支持中文,未仔细测试
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //订阅
            if (this.sub == null)
            {
                this.sub = new SubscriberSocket(this.textBox3.Text);
            }
            //网上有说只要发布的数据都会传到客户端,由客户端判断订阅的topic是否匹配
            //经测试最新版本4.0.1.13并非如此,如果不是本客户端订阅的不会传输到本地
            this.sub.Subscribe(this.textBox4.Text); 
            this.textBox1.Text = this.sub.ReceiveFrameString(out bool more1); //发布的key
            //byte[] b = this.sub.ReceiveFrameBytes(out bool more2);
            this.textBox2.Text = this.sub.ReceiveFrameBytes().Length.ToString();

            // BinaryFormatter
        }

        private void button3_Click(object sender, EventArgs e)
        {
            MyObject obj = new MyObject { IntProperty = 1, StringProperty = "Samplk中文化e" };
            obj.buf = File.ReadAllBytes("e:\\图片2.png"); //图片长度426748


            BinaryFormatter formatter = new BinaryFormatter();
            MemoryStream msg = new MemoryStream();
            formatter.Serialize(msg, obj);
            byte[] ppp = msg.ToArray(); //长度427000

            msg.Position = 0;
            MyObject deserializedObj = formatter.Deserialize(msg) as MyObject;

            //DataContractSerializer
        }

        private void button4_Click(object sender, EventArgs e)
        {
            MyObject obj = new MyObject { IntProperty = 1, StringProperty = "Samplk中文化e" };
            obj.buf = File.ReadAllBytes("e:\\图片2.png"); //图片长度426748

            byte[] binaryData;
            using (var memoryStream = new MemoryStream())
            {
                using (var binaryWriter = new BinaryWriter(memoryStream))
                {
                    string json = JsonConvert.SerializeObject(obj);
                    int len = json.Length; //字符串长度569056
                    binaryWriter.Write(json);
                    binaryData = memoryStream.ToArray();//字符串长度569065
                }
            }

            // 反序列化二进制数据回对象
            MyObject deserializedObject;
            using (var memoryStream = new MemoryStream(binaryData))
            {
                using (var binaryReader = new BinaryReader(memoryStream))
                {
                    var json = binaryReader.ReadString();
                    deserializedObject = JsonConvert.DeserializeObject<MyObject>(json) as MyObject;
                }
            }
        }

        private void button5_Click(object sender, EventArgs e)
        {
            byte[] buf = File.ReadAllBytes("e:\\图片2.png"); //图片长度426748
            using (var memoryStream = new MemoryStream())
            {
                using (var binaryWriter = new BinaryWriter(memoryStream))
                {
                    string json = JsonConvert.SerializeObject(buf);
                    int len = json.Length; //字符串长度569002
                    binaryWriter.Write(json);
                    byte[] binaryData = memoryStream.ToArray();  //字节数组长度569005
                }
            }

            BinaryFormatter formatter = new BinaryFormatter();
            MemoryStream msg = new MemoryStream();
            formatter.Serialize(msg, buf);
            byte[] ppp = msg.ToArray(); //ppp的长度426776

        }

        private void button7_Click(object sender, EventArgs e)
        {
            //拉数据
            //经测试,两个客户端后发的可以先到,即不是串行的
            PullSocket pull = new PullSocket("tcp://*:3307");
            int m = 1;
            while (true)
            {
                byte[] buf1 = pull.ReceiveFrameBytes();
                File.WriteAllBytes($"d:\\tmp\\{m}.dat", buf1);
                File.WriteAllText($"d:\\tmp\\{m}.txt", DateTime.Now.ToString());
                this.textBox1.Text = DateTime.Now.ToString();
                m++;
                Application.DoEvents();
            }


        }

        private void button6_Click(object sender, EventArgs e)
        {
            //推数据
            PushSocket push = new PushSocket();
            push.Connect(this.textBox3.Text);
            byte[] buf = File.ReadAllBytes("video.rar");
            DateTime t = DateTime.Now;
            push.SendFrame(buf);
            this.textBox1.Text = (DateTime.Now - t).TotalSeconds.ToString();
            push.Close();
        }

        private void button9_Click(object sender, EventArgs e)
        {
            //等待模式
            //经测试,
            ResponseSocket res = new ResponseSocket("tcp://*:3307");
            int m = 1;
            while (true)
            {
                byte[] buf1 = res.ReceiveFrameBytes();
                res.SendFrame("OK: " + buf1.Length);
                File.WriteAllBytes($"d:\\tmp\\{m}.dat", buf1);
                File.WriteAllText($"d:\\tmp\\{m}.txt", DateTime.Now.ToString());
                this.textBox1.Text = DateTime.Now.ToString();
                m++;
                Application.DoEvents();
            }
        }

        private void button8_Click(object sender, EventArgs e)
        {
            //发消息,经测试,和PUSH一样,也是串行的,网络慢的先发送,网络快的后发,也是快的先被服务器收到
            RequestSocket req = new RequestSocket();
            req.Connect(this.textBox3.Text);
            byte[] buf = File.ReadAllBytes("video.rar");
            DateTime t = DateTime.Now;
            req.SendFrame(buf);
            this.textBox1.Text = (DateTime.Now - t).TotalSeconds.ToString();
            this.textBox2.Text = req.ReceiveFrameString();
            req.Close();
        }
    }

    [Serializable]
    public class MyObject
    {
        public int IntProperty { get; set; }
        public string StringProperty { get; set; }
        public byte[] buf { get; set; }

    }
}

  

 

标签:File,netmq,Text,DateTime,测试,new,byte,buf
From: https://www.cnblogs.com/81/p/18340702

相关文章

  • linux测试cpu性能的命令
    linux测试cpu性能的命令在Linux中,可以使用多种命令来测试CPU性能。以下是一些常用的命令:stress:一个通用的压力测试工具,可以生成CPU、内存、IO等负载。安装:sudoapt-getinstallstress(Debian/Ubuntu)使用:测试所有CPU核心:stress--cpu8测试单个CPU核心:stress--cpu......
  • 有没有办法阻止 setUp() 为 python 测试用例中的每个测试方法启动浏览器?
    我正在练习编写Web自动化测试用例,并且编写了一些函数来测试登录、在用户主页中查找我的用户名以及测试GitHub的注销功能。然而,我通过经验和阅读了解到setUp()是在每个测试方法之前启动的,而我的问题是在每个测试方法之前它都会打开一个新的浏览器。我希望我的所有测......
  • 网页和 APP 测试工程师通常需要掌握的技能
    以下是一个网页和APP测试工程师通常需要掌握的技能:功能测试技能:熟悉各种测试方法,如等价类划分、边界值分析、因果图等。能够编写详细的测试用例,覆盖各种功能场景。自动化测试技能:掌握一种或多种自动化测试工具,如**Selenium(用于网页)、Appium(用于APP)。**熟练使用编......
  • 使用 Alba 对 AspnetCore项目进行测试
    前言在AspnetCore生态系统中,我们测试项目一般使用Microsoft.AspNetCore.TestHost的TestServer到.NET6后提供的Microsoft.AspNetCore.Mvc.Testing的WebApplicationFactory,后者是前者的封装,专门用于测试ASP.NETCore应用程序。它简化了创建和配置测试服务器的过程。而Alba也......
  • postman接口测试工具
    Postman是一款用于API开发和测试的工具,也是一款常用的接口测试工具。它提供了简便的界面和丰富的功能,可以方便地创建、调试和管理API请求,进行接口测试和自动化测试。使用Postman,你可以:1.创建和发送各种类型的API请求,包括GET、POST、PUT、DELETE等。2.设置请求头、请求参数......
  • Jmeter(五十一)上传类接口测试
    人的一切痛苦,本质上都是对自己无能的愤怒                   ----《认知觉醒:开启自我改变的原动力》一、HTTP请求中勾选UseMultipart/form-data 二、传入其他参数于Parmameters 三、FilesUpload选项卡传入本地excel路径即可注:M......
  • 重庆市软件测试技能大赛——自动化测试(Selenium)篇
    声明如下:个人学习笔记,可以作为复习参考等看一看,在此分享:自动化测试(selenium)篇①点击操作------.click()方法是点击元素的正中心②输入操作------.send_keys()方法使用时先清楚原有内容:.clear()→在进行输入操作③获取元素内信息(属性名,ID内容)操作------.get_attribute()......
  • 渗透测试
    联通国际公司渗透测试服务:深度防御,守护企业数字疆界在数字化转型的浪潮中,企业的网络安全已不再是可选项,而是关乎生存与发展的必答题。为了在这场没有硝烟的战争中占据主动,联通国际公司匠心打造了一项核心服务——渗透测试服务,旨在通过模拟真实黑客的攻击手法,深度挖掘并修复企业......
  • ACM第三次测试部分题解(B,C,D,E,J)
    (B)N^N(简单快速幂模板,直接套用就行)点击查看代码#include<iostream>usingnamespacestd;longlonga,b,n;intmain(){cin>>n;while(n--){scanf("%lld",&a);signedlonglongA=a%10,sum=1;while(a)......
  • 通用测试技术5
    一、缺陷的基本概述缺陷的定义缺陷的属性缺陷类型:缺陷的类型包括功能(Function)、界面(UI)、文档(Documentation)、软件包(Package)、性能(Performance)、接口(Interface)[注意]需求分析、设计阶段,文档类型的缺陷多;集成测试阶段,一般接口类型的缺陷多一些;系统测试阶......