昔牧 发布的文章

MQTTnet4入门(一)实现服务端


MQTT主要用于物联网,最近因为一些特殊需求,需要做个类似SCADA的东西,经过评估MQTT比较符合预期。
对于MQTT,.Net下有个使用最广泛的库MQTTnet,nuget里最新的版本是4.1.4.563。网上搜了一下,现有教程基本都是2或者3这些版本,而到了4.0版里面的使用发放确实不太一样,所以本篇以上述版本为例,实现一个简单的服务端和客户端。

创建服务端:

MqttServer server;

var optionbuilder = new MqttServerOptionsBuilder()
            .WithDefaultEndpoint()//设置默认地址127.0.0.1
            .WithDefaultEndpointPort(1883);//设置端口

server = new MqttFactory().CreateMqttServer(optionbuilder.Build());//创建服务端实例
server.ClientConnectedAsync += Server_ClientConnectedAsync;//实现客户端连接方法
server.StartAsync();//启动服务端

对于其中的客户端连接后的方法:

private Task Server_ClientConnectedAsync(ClientConnectedEventArgs arg)
{
    MessageBox.Show($"{arg.ClientId}上线了!");
    return Task.CompletedTask;
}

一般情况下,服务端(broker)只是一个中转站,所有的消息都是由客户端发送至服务端,然后服务端转发至其他客户端。但服务端也提供了一个方法,可以实现服务端向客户端进行广播:

server.InjectApplicationMessage(
            new InjectedMqttApplicationMessage(
                new MqttApplicationMessageBuilder()
                .WithTopic("主题")
                .WithPayload("消息内容")
                .Build()
                )
            );

HttpRequest在执行ReadToEnd()时卡住


最近在请求内网MIS系统的某一接口时,发现请求超时了。一开始以为网络卡,延长请求超时时间到1分钟,依然超时。

加断点调试,发现请求Requeset请求一直卡在ReadToEnd()

using (Stream streamReceive = response.GetResponseStream())
 {
    using (StreamReader streamReader = new StreamReader(streamReceive, encoding))
    {
        string strResult = streamReader.ReadToEnd();
        try
        {
            return strResult;
        }
        catch (Exception ex)
        {
            return ex.Message;
        }
     }
  }

查询了一下,发现原因出在了HTTP协议的版本上。

内网MIS服务器的HTTP版本是1.1,发送request后,response不会断开,所以ReadToEnd()就会读不完数据,造成一直卡在这里。

所以解决办法有两个:
1.设置request的http版本为1.0

request.ProtocolVersion=HttpVersion.Version10;

2.不使用ReadToEnd(),而是根据response里和content_length长度来决定需要读多少字节。读到够数就立刻关闭。


OneDrive无法登录 0x8004de88


最近几天发现笔记本电脑上的onedrive离线了,一直提示我登录,点击登录直接报代码0x8004de88。
按照网上的解决方案,把OneDrive卸载重装也没用,连了梯子也没用,但网页版是能够正常登录的。
后来下了个所谓“延期圈”的版本,出现了一个新问题:Please check your network settings and try again.[2603]还是死活登录不上,简直离了大谱。

bf3f5509-b644-46f8-b3fc-c10eff316947.png

后来在微软社区里找了找,发现只需要在Internet选项里,勾上“TLS1.2”就行了。

tempsnip.png


江湖外挂解密:(二)功能介绍


花了三天时间研究了下江湖,相比很多年前的世纪江湖,引入了很多功能,玩法也更多。而我们的目的是让所有能够使用到的功能全部通过外挂自动执行,让挂机的账号和真人24小时在线一样。

下面,对一些已经实现的功能做一个具体介绍:

1、无限账号
现在江湖估计是为了防止一个人账号过多,占用服务器资源,所以限制了一个IP只允许5个账号登录。账号越多,对于个人而言能够获得的物资也就越多。为此,我专门实现了无限个账号登录的功能,不受IP的限制。
外挂界面

无限账号同时登录

同时离线

同时登录,同时退出,断线重连,这也是外挂最基础的功能。

2、自动吃药、丝绸之路
丝绸之路各个江湖的叫法不一样,有的叫走私,有的叫运气。说白了就是隔一段时间自动获得物资,但是需要角色有最低现金、最低体力的要求。现金只要存点就能有,体力不够就自动吃药。丝绸之路也是挂号的最根本目的,获得的物资给大号转生、进修。
丝绸之路

3、自动存点、申领金币
存点是挂机的意义所在,可以获得相应的经验、体力、内力、银两、攻击防御等等,申请金币就是挂机满一小时,可以领取一定数量的金币。这也是外挂的基础功能,就不截图了。

4、自动押镖、爬千层塔
这也是现在的江湖基础玩法,外挂可以实现全程自动,千层塔我试了下最快纪录3秒爬完12层。因为这个会记录近排行榜,我就加了些延时,没想到还是霸榜了。
千层塔排行榜

5、自动种花、售卖
这个玩法各个江湖的策略的不一样,我测试的这个江湖,每次存点花园的花会自动增加成熟度,满100成熟后会自动卖掉同时再自动花金币买种子。还有个大花园,里面的花必须手动种植,用金币不能买里面的种子。那么外挂就在此实现自动种植,自动将花换成种子并售卖,一天下来大号能有四五千金币,很赚。
大花园

6、自动签到、通过验证
签到这个功能要求在线30分钟然后手动领工资,领工资之前还需要通过一个滑块验证码。
外挂解决了这个问题,能够自动滑动验证码,同时也解决了打怪前的验证问题。
通过验证码

7、自动答题、领取活跃
江湖里的答题功能还是提供了不少物资,外挂也实现了自动答题。
有些江湖还有活跃度功能,用于给予活跃玩家一些奖励,外挂也一一实现。
活跃度

8、终极玩法,批量操作
最后我还开发了终极玩法,无限账号的批量操作。可以发言、攻击、攻城、出关、通过验证。
批量操作

可以选定任意数量的账号,出关、通过验证、攻城、攻击玩家,并且不受限制(比如同IP最多两个账号动武等等)。
好了,大概就这么多!


江湖外挂解密:(一)绪论


在遥远的2002年,我家通网了。当年最火的动画片叫《蓝猫淘气三千问》,在动画片的开头放了一个官方网站的链接。网站里都是蓝猫的周边,但是主页的logo下面有一个指示牌,写着“灵刻江湖”,于是打开了网页江湖游戏的大门。然而当时没怎么看懂,直到有一天我点击了网页上的“杀入江湖”,瞬间眼前一亮,竟然是个聊天室。叮叮叮,一上来就被送了一串数字的银子,还感谢了那位女侠一番。再后来, 蓝猫的官网打不开了,那个江湖再也没有进得去。

阿男世纪江湖

那些年,每个地方都会有一个XX信息港。偶然一天,我突然在本地的XX信息港里发现了XX江湖,站长春江水,是阿男世纪江湖的正版用户。于是我叫上了同学一起玩,还发现有个同学他妈也在玩,24小时挂机的那种,有几个比较厉害的账号。我们就比较羡慕,也和他学了不少操作,但是如何多开账号就是一直没有告诉我们。那时候江湖的版本从6.5一直玩到8.3,很多东西都是纯手动。帮助别人升级要传授自己的经验给别人,每次1000,传一下要好久。花园里的花,都是一点一点成长值种的。江湖里正常的操作是得不到金币的,只能把花园里种出来的花卖个官府一朵60金币,要么就是等每天18:00,站长在大厅里发金币,每天大概每人能得到100多个。由于每天也玩不了多久,所以一直都是江湖的最底层,看各位大佬在江湖潇洒。

花园

后来呢,一直玩了好几年,忽然在某一天关掉了。最近,又玩起了一些江湖,回忆回忆童年,打发打发时间。

挂号器

现在每个江湖都提供了一个叫做挂号器的东西,实际上就是一个脱机外挂,可以不登陆江湖,自动存点、种花、养猪、挖宝等等,并且可以多账号同时操作。挂号器是江湖站长自己推出的,只有一些基础功能用来解放双手。但很多功能比如大花园种花、押镖、千层塔、抢红包、打怪等等都是需要手动玩的。那么下面就来自己定制一款高大上的江湖外挂,成为江湖盟主!