QtTelnet

原创 2013年12月03日 02:18:10

       学习qttelnet-2.1_1-opensource。

1、  QSocketNotifier的使用

        QSocketNotifier在该类中使用的目的是用于:监听socket的exception。

        但:QTcpSocket and QUdpSocket provide notification through signals, so there is normally no need to use a QSocketNotifier on them.

         也就是说:QTcpSocket已经提供有readyRead()、error()的signal函数来监听是否可以读数据、是否有Exception;且该类中只使用了QTcpSocket来实现Telnet。

         因此,QtTelnet类中对QSocketNotifier的操作是多余的?

2、  Close

         1)QtTelnet::close()可以通过调用QtTelnetPrivate::socketConnectionClosed来实现,以增加code reuse。

         2)loggedOut可能被emit两次。

       该类中,在外部调用QtTelnet::close()时,loggedOut()信号会被emit两次。因为在QtTelnet::close()会调用“d->socket->close();”------关闭socket------触发QtTelnetPrivate::socketConnectionClosed------emit loggedOut(),而QtTelnet::close()也会emit  loggedOut()。

         可以将QtTelnet::close()中的emit  loggedOut()删除掉,以解决该问题?

3、  QtTelnet类和QtTelnetPrivate之间的关系

        类QtTelnetPrivate里含有指向QtTelnet的指针;类QtTelnet里又含有指向QtTelnetPrivate的指针。为什么会这样定义?

         QtTelnetPrivate名字中“private”的含义可能就在于QtTelnetPrivate是QtTelnet私有的,即只能由QtTelnet使用。此处实现的关键在于:QtTelnet构造函数中对指向QtTelnetPrivate类的指针的初始化。以下是QtTelnet的构造函数:

QtTelnet::QtTelnet(QObject *parent)
    : QObject(parent), d(new QtTelnetPrivate(this))
{
}

4、  QtTelnet的signal函数message()

         该函数再QtTelnet的成员函数里并没有用到,而是在QtTelnetPrivate::parsePlaintext()里被emit,那为什么不直接把message()定义在QtTelnetPrivate类里?

        经试验,不可以。

         因为developer只能使用QtTelnet而不能使用QtTelnetPrivate,QtTelnet是由QtTelnetPrivate composition成的,developer的connect()只能使用QtTelnet里的函数。



 

相关文章推荐

telnet 简单客户端学习

#include #include #include #include #include #include #include #include #include #include ...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

简单的telnet(带详解)

#include #include #include #include #include #include #include #include #include #include #include #...
  • lxb316
  • lxb316
  • 2010年03月02日 10:38
  • 2415

Qt TCP协议 传输简单字符串实例

转载自http://mobile.51cto.com/symbian-270781_all.htm Qt TCP协议 传输简单字符串实例是本文要介绍的内容。TCP即Transmission Co...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

基于TCP流协议的数据包通讯

TCP通讯是流协议,它不像UDP那样基于包为边界的通讯方式, TCP流式协议,举个简单例子,一端用send 分别发送 100,123,120字节的数据, 另一端用recv可以一下子接收到 100+12...

应用服务器性能优化 之 消息队列(MQ:Message Queue)

消息队列的常见应用场景: 1,流量控制和业务剥离; 由于磁盘IO的速度与内存的速度差距太大,数据库通常都会成为系统的瓶颈。并且升级硬件成本较高,所以公司通常都会采取软件的方法来解 决这类问题。还是那...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:QtTelnet
举报原因:
原因补充:

(最多只允许输入30个字)