QLocalSocket和QLocalServer的简单使用

以下内容参考或转载自:

http://blog.csdn.net/sauphy/article/details/46136333


[html]  view plain  copy
  1. 1、用QTime统计某函数执行消耗时间。  
  2.    QTime t;  
  3.    t.start();  
  4.    some_lengthy_task();  
  5.    qDebug("Time elapsed: %d ms", t.elapsed());  
[html]  view plain  copy
  1. 2、采用QLocalServer实现QT程序的单实例运行  
  2.    QLocalServer *server;  
  3.    server = new QLocalServer(this);  
  4.    if (!server->listen("fortune")) {  
  5.         QMessageBox::critical(this, tr("Fortune Server"),  
  6.                               tr("Unable to start the server: %1.")  
  7.                               .arg(server->errorString()));  
  8.         close();  
  9.         return;  
  10.    }  
[html]  view plain  copy
  1. 3、使用QStringList存储若干预定字符串。  
  2.     QStringList fortunes;  
  3.     fortunes << tr("You've been leading a dog's life. Stay off the furniture.")  
  4.              << tr("You've got to think about tomorrow.")  
  5.              << tr("You will be surprised by a loud noise.")  
  6.              << tr("You will feel hungry again in another hour.")  
  7.              << tr("You might have mail.")  
  8.              << tr("You cannot kill time without injuring eternity.")  
  9.              << tr("Computers are not intelligent. They only think they are.");  
  10.    fortunes.at(i); //访问第i个字符串  
[html]  view plain  copy
  1. 4、Qt中获取随机数  
  2.    qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));//播种子  
  3.    qrand() % size;//获取随机数  
[html]  view plain  copy
  1. 5、借助于QDataStream构建信令包(格式:dataSize_data)  
  2.    //发送端  
  3.     QByteArray block;  
  4.     QDataStream out(&block, QIODevice::WriteOnly);  
  5.     out.setVersion(QDataStream::Qt_4_0);  
  6.     out << (quint16)0;  
  7.     out << fortunes.at(qrand() % fortunes.size());  
  8.     out.device()->seek(0);  
  9.     out << (quint16)(block.size() - sizeof(quint16));  
  10.    //接收端  
  11.     QDataStream in(socket);  
  12.     in.setVersion(QDataStream::Qt_4_0);  
  13.     if (blockSize == 0) {  
  14.         if (socket->bytesAvailable() < (int)sizeof(quint16))  
  15.             return;  
  16.         in >> blockSize;  
  17.     }  
  18.     if (in.atEnd())  
  19.         return;  
  20.   
  21.     QString nextFortune;  
  22.     in >> nextFortune;  
[html]  view plain  copy
  1. 6、QLocalServer的简单通信使用  
  2.    listen(name);  
  3.    //listen()客户的连接,一旦有外程序运行成功,则触发该信号  
  4.    connect(server, SIGNAL(newConnection()), this, SLOT(sendFortune()));  
  5.    //在槽函数中获取客户端Socket  
  6.    QLocalSocket *clientConnection = server->nextPendingConnection();  
  7.    connect(clientConnection, SIGNAL(disconnected()),  
  8.            clientConnection, SLOT(deleteLater()));  
  9.     clientConnection->write(block);  
  10.     clientConnection->flush();  
  11.     clientConnection->disconnectFromServer();  
[html]  view plain  copy
  1. 7、QLocalSocket的简单使用  
  2.    QLocalSocket * socket = new QLocalSocket(this);  
  3.    connect(socket, SIGNAL(readyRead()), this, SLOT(readFortune()));//监听可读数据  
  4.    connect(socket, SIGNAL(error(QLocalSocket::LocalSocketError)),//监听错误  
  5.            this, SLOT(displayError(QLocalSocket::LocalSocketError)));  
  6.    //向指定服务器连接  
  7.    socket->abort();//先断开已有连接  
  8.    socket->connectToServer(hostLineEdit->text());//Server和Client的name一致即可  
[html]  view plain  copy
  1. 8、定时器QTimer单次触发槽函数  
  2.    QTimer::singleShot(0, this, SLOT(requestNewFortune())); 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值