PCQQ协议 简单实现某版本QQ登录与收发消息的功能
如果对你有用,希望你能留下Star
MyUser.cs为本人扩展用户名和密码这里不做上传
将QQ.Framework目标框架改为netstandard
重构MessageManage,将对包的处理逻辑移至Command中, 对应项目里Domains/Commands文件夹下的内容。 如何添加一个Command:
- 首先在
Domains/Commands
下对应目录新建Command, 继承ReceiveCommand
/SendCommand
。 - 在新建的Commad上添加
[ReceivePackageCommand(QQCommand.具体你的包名)]
, 这个属性就是包分发的依据,你填写的是什么Command,那么当接收到这个包的时候就会分发给这个类来处理。 - 构造函数中实例化对应
Packet
和QQQEventArgs
。 - 在
Receive
方法中写你的具体逻辑即可。
通过以上四步, 就可以对一个包的解析啦,不用去修改MessageManage,避免在多人修改时容易产生冲突导致, 也更方便的查看处理包的具体逻辑。
Tips: 可以参考Domains/Commands/ReceiveCommands/LoginPingCommand
的写法, 这个是对于Login0x0825包的处理。
添加XML消息发送
移除ByteBuffer,使用BinaryReader和BinaryWriter进行读写。
发送数据包的方式变更
//原方式
var buf = new ByteBuffer();
new Send_0x0000().Fill(buf);
Send(buf);
//新方式
Send(new Send_0x0000().WriteData());
//使用以下方法替换原有的ByteBuffer.Put和Get
//若类型为byte或byte[]
BinaryReader.ReadByte()
BinaryReader.ReadBytes(int count)<br/>
BinaryWriter.Write(byte) //注意:需要进行类型转换,如Write((byte)1);
BinaryWriter.Write(byte[])
//对于其他类型(char, ushort, int, long)
BinaryReader.BEReadChar()
BinaryReader.BEReadUInt16()
BinaryReader.BEReadInt32()
BinaryWriter.BEWrite(ushort)
//这些扩展方法定义于Utils.Util.cs内。
合并Core和Framework到同一个文件夹(如果编译出错删除bin、obj和.vs重新编译)
添加发送系统表情(格式为“[face{num}.gif]”),num为系统表情对应索引
新增长文本分段发送
修改为项目为.Net Core
以一种我也不知道会不会出问题的方式兼容了Core和Framework了
新增验证码处理
我的TOXID:536F06809AAE9F29B8440B308E310AF8A26B9F93ADB60CAE086EEB26AB8F0D167486F38F39ED