QLocalSocket

2 篇文章 0 订阅
1 篇文章 0 订阅
QLocalSocket类提供了一个本地套接字。
在Windows这是一个命名管道,在Unix下这是一个本地网域套接字。
如果发生错误,socketError()返回错误的类型,errorString()返回错误的描述。
虽然QLocalSocket是一个事件循环使用而设计,它也可以不被如此使用。在这种情况下,您必须使用waitForConnected(),waitForReadyRead(),waitForBytesWritten()和waitForDisconnected()的块,直到操作完成或超时过期。
注意:此功能不支持windows xp之前的windows系统。
============================================
                            函数方法描述
============================================
QLocalSocket::QLocalSocket ( QObject * parent = 0 )
创建一个新的本地套接字。
通常使用这样的方式创建:
QLocalSocket *mySocket = new QLocalSocket(this);


QLocalSocket::~QLocalSocket ()
销毁套接字。如有连接,关闭连接。


void QLocalSocket::abort ()
终止当前连接,并重置socket。
与disconnectFromServer()不同,abort()是立即关闭socket,并且清除掉写缓存中未处理的数据。


qint64 QLocalSocket::bytesAvailable () const   [virtual]
重新实现 QIODevice::bytesAvailable().
返回可以读取的input数据的字节数,也就是返回输入缓存的大小。


qint64 QLocalSocket::bytesToWrite () const   [virtual]
重新实现 QIODevice::bytesToWrite().
返回正在等待被写的数据的字节数,也就是返回输出缓存的大小。


bool QLocalSocket::canReadLine () const   [virtual]
重新实现 QIODevice::canReadLine().
如果这一次可以从这个套接字中读取一个完整行的文本,返回ture,否则返回false。
注意:如果意外的关闭连接,这个函数将返回false。


void QLocalSocket::close ()   [virtual]
重新实现 QIODevice::close().
关闭套接字。
清空读缓存。
如果输出缓存是空的,状态被设置成UnconnectedState,连接立即被终止。
如果输出缓存中还有数据要写,socket进入ClosingState状态,当数据写入完成之后,状态被设置成UnconnectedState,终止连接。并发送disconnectFromServer()信号。


void QLocalSocket::connectToServer ( const QString & name, OpenMode openMode = ReadWrite )
尝试创建一个到name的连接。
The socket以给定的openMode方式开启,并首先进入ConnectingState状态。
然后The socket尝试连接到指定地址或查找到的地址。
最后,如果成功的建立起了连接,QLocalSocket进入ConnectedState状态,并发送connected()的信号。
在这个过程中的任何时候,只要有错误发生,the socket都会发送error()的信号。


void QLocalSocket::disconnectFromServer ()
尝试着关闭socket。
如果缓存中仍有等待写入的数据,QLocalSocket将进入ClosingState状态,然后等待,直到所有数据写完,
QLocalSocket进入UnconnectedState状态,发送disconnected()信号。


bool QLocalSocket::flush ()
flush()能够无阻塞的将内部写缓存中的数据尽可能多的写入到socket中。
当有任何数据被写入时,该方法返回值为true,否则返回值为false。
当你需要QLocalSocket立即发送缓存中的数据时,可以调用该方法。一次性成功写入多少个字符取决于操作系统。
大多数情况下,你不需要调用该方法,因为一旦事件循环得到了控制权之后,QLocalSocket就会自动的开始发送数据。
当没有事件循环时,一般是调用waitForBytesWritten(),而不是直接调用flush()。


QString QLocalSocket::fullServerName () const
返回socket连接到的server path。
注意:返回值因操作系统不同存在差异。


bool QLocalSocket::isSequential () const   [virtual]
重新实现 QIODevice::isSequential().


bool QLocalSocket::isValid () const
当the socket是合法的并且准备好了,该方法返回ture,否则返回false。
注意:the socket进行读,写之前,一定是处于ConnectedState状态。


qint64 QLocalSocket::readBufferSize () const
该方法返回内部读缓存的size。
这个size是在调用read()和readAll()之前,限制client接收数据的大小,
如果读缓存的size是0(默认值),意味着读缓存没有size限制,可以确保没有数据丢失。


qint64 QLocalSocket::readData ( char * data, qint64 c )   [virtual protected]
重新实现 QIODevice::readData().


QString QLocalSocket::serverName () const
返回由connectToServer()的参数指定的server的name。
如果没有调用connectToServer(),或者连接失败,返回空字符串。


void QLocalSocket::setReadBufferSize ( qint64 size )
设置QLocalSocket内部读缓存的字节数。
如果设置了指定的size,QLocalSocket最多只能缓存该size大小的数据。
默认的size为0,意味着size没有限制,所有进来的数据都将放在缓存中。
设置size常用于:及时读取数据,或者保护socket免于接收太多数据而造成内存消耗时。


bool QLocalSocket::setSocketDescriptor ( quintptr socketDescriptor, LocalSocketState socketState = ConnectedState, OpenMode openMode = ReadWrite )
使用本地套接字描述符socketDescriptor完成QLocalSocket的初始化。
socketDescriptor被接受为有效的本地套接字时,返回true,否则返回false。
设置的套接字以给定的openMode方式打开,并进入由socketState指定的状态。
注意:不能使用同一个本地套接字描述符完成两个本地套接字的初始化。


quintptr QLocalSocket::socketDescriptor () const
如果有可用的QLocalSocket对象,则返回本地套接字描述符。否则,返回-1。
当QLocalSocket处于UnconnectedState状态时,本地套接字描述符是无效的。


LocalSocketState QLocalSocket::state () const
返回the socket的状态。


bool QLocalSocket::waitForBytesWritten ( int msecs = 30000 )   [virtual]
重新实现 QIODevice::waitForBytesWritten().


bool QLocalSocket::waitForConnected ( int msecs = 30000 )
为了使the socket连接上,等待msecs毫秒。
如果连接成功,返回true。连接不成功,返回false。
当返回false时,可以调用error()来获取失败的原因。
当时间超过mescs,连接仍然不成功,则返回false,通过error()可以得到超时错误的信息。
如果msecs==-1,表明调用该方法不会超时。


bool QLocalSocket::waitForDisconnected ( int msecs = 30000 )
见waitForConnected ( int msecs = 30000 )的描述。


bool QLocalSocket::waitForReadyRead ( int msecs = 30000 )   [virtual]
重新实现 QIODevice::waitForReadyRead().
该方法在数据准备好且发出readyRead()信号之前,是阻塞的。
超时之后,返回超时错误。
默认的msecs是30000毫秒。
当数据准备好了,返回ture;否则返回false。


qint64 QLocalSocket::writeData ( const char * data, qint64 c )   [virtual protected]
重新实现 QIODevice::writeData().


============================================
                       信号(可理解为:cocoa中的notification)
============================================
void QLocalSocket::connected ()   [signal]
调用connectToServer(),并且成功建立了连接之后,发送connected () 信号。


void QLocalSocket::disconnected ()   [signal]
当socket已经被断开后,发送disconnected ()信号。


void QLocalSocket::error ( QLocalSocket::LocalSocketError socketError )   [signal]
当有错误发生时,会发送error()信号。
参数socketError表明错误的类型。
QLocalSocket::LocalSocketError不是注册的metatype类型,所以在队列连接中需要使用Q_DECLARE_METATYPE() 和 qRegisterMetaType()注册之。


void QLocalSocket::stateChanged ( QLocalSocket::LocalSocketState socketState )   [signal]
只要QLocalSocket的状态发生改变,就会发送stateChanged()消息。
参数socketState表示新的状态。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值