在Qt中,提供了多种IPC方法,作者所用的是QLocalServer和QLocalSocket。看起来好像和Socket搭上点边,实则底层是windows的name pipe。这应该是支持双工通信的。
QLocalServer用来监听某个管道。可以这样建立一个监听
QLocalServer *localServer;
localServer = new QLocalServer(this);
localServer->setMaxPendingConnections(MAX_CONNECTION);
if (localServer->listen("commandpipe"))
{
qDebug()<<"listen commandpipe namepipe sucessful.";
}
else
{
qDebug()<<"failed to listen commandpipe. ";
}
connect(localServer, SIGNAL(newConnection()), this, SLOT(DealConnection()));
void IPCServer::DealConnection()
{
QLocalSocket *socket = localServer->nextPendingConnection();
socket->waitForReadyRead();
QData