Qt中IPC之一的QLocalSocket和QLocalServer实现了单工与双工通信。在qtdemo中有例子说明,这里作自己的理解实现双工通信的过程。
服务端:
QLocalSocket*m_socket ;
///----------------------------------------------------------------------------------
//初始化Server,监听特定连接
void initServer()
{
QLocalServer* m_server = new QLocalServer(this);//创建服务端
bool a = connect(m_server,SIGNAL(newConnection()), this, SLOT(onNewConnection()));//连接服务端收到的连接信号,即当客户端socket调用connectToServer函数时响应
QLocalServer::removeServer("IPCConnect");//移除服务端已有连接,保证本次监听成功
if (!m_server->listen("IPCConnect"))//监听特定的连接
{
QMessageBox::warning(this,"警告","监听失败!");
}
}
//----------------------------------------------------------------------------------
//新链接影响槽函数,获取发送端socket,设置槽函数影响收到来自发送端socket的信号
void onNewConnection()
{
if (m_server->hasPendingConnections())//如果服务端有一个待处理的连接
{
m_socket = new QLocalSocket(this);//创建一个套接字
m_socket = m_server->nextPendingConnection();//获取连接上的套接