首页 > 代码库 > PC安全终端项目通信模块解读

PC安全终端项目通信模块解读

庞大的代码,程序一点点调试了4天,终于有了眉目,可以正常接收服务器数据包了,不容易啊!成就感油然而生~

经验流程:

0、这个函数一开始就可以接收到服务器数据包,从日志中可以晓得:

static void onDataReceived(byte[] message)

1、新类需要继承CommunicationI类:

public class NotificationModule : CommunicationI

2、新类需要向通信模块注册:

public NotificationModule()
{
SocketClient.registerModule(this, Protocol.NotificationModule);
}

3、新类实现CommunicationI中的onMessageReceived接口:

public void onMessageReceived(TSTPackage pkg)
{

StreamWriter sw = new StreamWriter("D:\\client.txt", true, System.Text.Encoding.Default);
System.Text.UTF8Encoding con = new System.Text.UTF8Encoding();
string inputString = con.GetString(pkg.Content);
sw.Write("\r\n" + inputString);
sw.Flush();
sw.Close();

//MainWindow myWnd = new MainWindow();
//myWnd.Show();

}

4、public static bool registerModule()方法中,需要修改假如新项目信息:

if (_moduleCode == Protocol.POLICY_MODULE || _moduleCode == Protocol.COMPUTER_INFO_MODULE || _moduleCode == Protocol.VIRUS_MODULE || _moduleCode == Protocol.PATCH_MODULE || _moduleCode == Protocol.REGISTRATION_MODULE || _moduleCode == Protocol.STATE_MODULE|| _moduleCode ==Protocol.NotificationModule)

5、public class Protocol类中需要增加新项目字段:

public const int NotificationModule = 0X7000;

6、public partial class HostingService类中,需要初始化新类:

new notificationModule.NotificationModule();

-------------------------至此,客户端通信代码,基本配置完毕,好多细节啊,每一点都要命,各种调试追踪-----------------------------------

7、服务器端JAVA代码数据包CODE值改为目标新项目:

FrontSocketServer.sendMessageToClient(new TSTPackage(Protocol.NotificationModule, 0, ("***title***:"+title+"***content***:"+content).getBytes()), clients);

8、服务器端public class Protocol()类增加新字段,跟客户端对应:

/**
* 弹窗模块
*/
public static final int NotificationModule = 0X7000;

9、public class CenterServerShortHandler extends IoHandlerAdapter中的public static void registerModule()函数,同样需要增加新项目信息:

if(_moduleCode==Protocol.PATCH_MODULE || _moduleCode==Protocol.POLICY_MODULE || _moduleCode==Protocol.COMPUTER_INFO_MODULE || _moduleCode==Protocol.VIRUS_MODULE || _moduleCode==Protocol.REGISTRATION_MODULE || _moduleCode==Protocol.STATE_MODULE)

-------------------------至此,客户端新项目可以接收到服务器数据包了,但是弹窗代码提示引用错误,继续解决吧-----------------------------------

有感:项目客户端代码前辈果然是一位大神,每一句指导都很透彻,客户端框架和通信模块都是他写的,这两点我感觉是项目的难点。WCF技术,有机会我需要仔细研究下,逻辑之美。另外,WPF有机会也需要再次深入研究。跟随大神,收获颇大,也感受到编码、调试的乐趣,这是第一次遇到这么大的难点,以前开发可以网络借鉴的很多,这个方法不行就换一个,但是这次是在别人代码基础上修改和二次开发,理解代码的同时,感受到了代码逻辑之美。

有人说横向开发项目没用,我感觉的确费时间,不过多掌握一门技术总没错,成长很大,再接再厉!

PC安全终端项目通信模块解读