嵌入式Linux即时通讯的实现(2)

我们的程序时在Qt/Embedded基础上采用面向对象方法设计的,用c++语言开发的。因此我们的各种协议都是封装在类中。Qt/Embedded是一个基于C++的CUI库,具有很好的移植性。

3.1  插座设计

首先我们需要设计一个抽象类,它包括各种协议都使用的一些基本的操作,通过分析现有的IM协议我们抽象出一些操作,例如:登录服务器,断开和服务器的连接,添加删除联系人,发送消息,接受消息,发送接受文件等。在此基类中我们只给出纯虚拟函数。然后派生于此基类的各种协议类各自实现所做的操作。这样通过多态的方法,我们在主程序中只需要包含此基类就可无需知道子类中具体实现而可以使用各种子类对象。我们只需要规定基类中定义的一些统一的方法。

class ChatConnection : public QObject

{

public:

virtual bool openConnection(Account * account)=0;

virtual bool closcConnection()=0;

virtual void sendCommand(constQstring&prefix,constQstring&text)=0;

virtual void sendMessenge()=0;

...

};

在ChatConnection类中只定义了一些抽象函数接口,而把实现放在具体的协议实现中去。其中openConnection()是建立于服务器的连接,closcConnection()是断开连接,sendConnmand()负责发送各种命令,还有 sendMessenge()用来发送文本消息,receiveMessenge()接受联系人发来的文本消息等。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwswyj.html