QLocalServer类

【转自】http://blog.csdn.net/abby_sheen/article/details/7623617

QLocalServer

继承自QObject。

QLocalServer提供了一个基于本地套接字(socket)的服务端(server)。 QLocalServer可以接受来自本地socket的连接。 server通过调用listen(),监听特定的连接。 newConnection()是在每次server与client连接上时所发出的信号。 nextPendingConnection()将等待中的连接当作一个已连接上的QLocalSocket。返回值是指向QLocalSocket的指针,这个QLocalSocket可以与client建立通信。 当发生错误时,serverError() 返回错误的类型,调用errorString()可以获取错误的描述。 在监听过程中,通过 serverName()可以获取当前server监听的名称。 close()使QLocalServer停止对连接请求的监听。 虽然QLocalServer是为在事件循环中使用而设计出来的,但是在没有事件循环时也是可以使用的。没有事件循环时,你必须使用waitForNewConnection(),它只在以下两种情况下解除阻塞:1)有可用的连接;2)超时。 ============================================                             函数方法描述 ============================================ QLocalServer::QLocalServer ( QObject * parent = 0 ) 创建一个新的本地socket的server。 通常使用这样的方式创建: QLocalServer *myServer = new QLocalServer(this); QLocalServer::~QLocalServer () 销毁QLocalServer对象。 如果server正在监听连接,该方法自动关闭这个监听。 必须在server delete之前将当前处于连接状态的client QLocalSockets断开连接(或者将client的QLocalSockets重定向)。 void QLocalServer::close () 停止监听连接请求。 该操作不会影响已存在的连接,只是阻止新的连接。 QString QLocalServer::errorString () const 返回值是对serverError()上报的错误的详细描述。 如果错误内容没有适当的描述,则返回值为空字符串。 QString QLocalServer::fullServerName () const 返回server当前所监听的连接的完整路径。 注意:完整路径具有平台差异。 bool QLocalServer::hasPendingConnections () const   [virtual] server有等待中的连接,返回true,否则返回false。 void QLocalServer::incomingConnection ( quintptr socketDescriptor )   [virtual protected] 当一个新的连接可用时,QLocalServer会调用这个虚函数。 参数socketDescriptor是确认连接时的本地套接字描述符。 该方法主要完成:创建一个QLocalSocket,设置好socket描述符,然后将这个QLocalSocket存入到待连接的一张内部列表中。最后发送newConnection()信号。 重写这个方法,可以在有可用连接时,改变server的行为。 bool QLocalServer::isListening () const server正在监听连接,返回ture,否则返回false。 bool QLocalServer::listen ( const QString & name ) 让server去监听名为name的连接请求。如果server此时正处于监听状态,则返回false。 name可以是简单的名字,QLocalServer将决定路径的正确形式。 serverName()返回传递给listen()的name。 通常,你只需要传入类似“foo”的name即可。在Unix上,这个name也可以是一个路径“/tmp/foo”,在windows上name也可以指定为一个管道路径“\\.\pipe\foo”。 注意:在Unix上,如果server没有关闭listen就crash了,会产生一个AddressInUseError的错误。要想再创建一个新的server,就需要移除这个file。在windows上,两个本地server可以同时监听同一个管道,此时连接请求发生时选择的server没有确定性,即会任意的选择server进行连接。 int QLocalServer::maxPendingConnections () const 返回可接受的最大的等待连接数。认为30。 QLocalSocket * QLocalServer::nextPendingConnection ()   [virtual] 将下一个等待中的连接作为已连接上的QLocalSocket对象返回。 创建的这个socket被当作是server的后代,这意味着当server被销毁时,socket会被自动删除。 为避免内存浪费,仍然可以在使用完socket之后,显示删除它。 当没有等待的连接时,调用函数得到的返回值为0。 bool QLocalServer::removeServer ( const QString & name )   [static] 清除调用listen()失败的server实例。 调用方法可以避免因先前的server实例未被清理彻底引起的crash。 在windows上,该方法什么都不做;在Unix上,它清除由name指定的socket。 警告:注意不要清除当前正处于运行状态的实例的socket。 QAbstractSocket::SocketError QLocalServer::serverError () const 返回上次发生的错误类型。 没有错误则返回NoError。 QString QLocalServer::serverName () const 如果server当前正在监听连接,则返回server的name。 否则,返回空字符串。 void QLocalServer::setMaxPendingConnections ( int numConnections ) 将可接收的最大等待连接数设置为numConnections。 QLocalServer在调用nextPendingConnection()之前,最多只能接受numConnections个连接请求。 注意:尽管QLocalServer在等待的连接数目达到设置的最大值之后将不再接受新的连接请求,但是操作系统仍然会将这些新的连接请求保持在等待队列中,因为这些请求在连接上之后会给客户端发送信号。 bool QLocalServer::waitForNewConnection ( int msec = 0,bool * timedOut = 0 ) 为了获得一个可用的连接请求,等待msec毫秒。 如果连接请求可用,返回ture,否则返回false。 操作超时并且timedOut不为0,则将*timedOut设置为ture。 这是一个阻塞调用。它通常用于简单单线程GUI应用程序,因为在该函数返回之前,整个应用程序将停止对其他事件的响应。 waitForNewConnection()大多使用在非事件驱动的应用程序中。 要实现该函数功能,但又要使之不产生阻塞,参照newConnection ()信号的发送。 如果参数msec为-1,则该函数不超时。 ============================================                        信号(可理解为:cocoa中的notification) ============================================ void QLocalServer::newConnection ()   [signal] 每次有可用的新的连接时,就会发出这个信号。

相关文章

我正在用TitaniumDeveloper编写一个应用程序,它允许我使用Ja...
我的问题是当我尝试从UIWebView中调用我的AngularJS应用程序...
我想获取在我的Mac上运行的所有前台应用程序的应用程序图标....
我是一名PHP开发人员,我使用MVC模式和面向对象的代码.我真的...
OSX中的SetTimer在Windows中是否有任何等效功能?我正在使用...
我不确定引擎盖下到底发生了什么,但这是我的设置,示例代码和...