QLocalSocket类 进程间通信

evi_7 2016-07-13 01:59:39
背景:我在windows上运行一个名为geth.ipc的进程,路径为:"\\.\pipe\geth.ipc",现在想通过QLocalSocket去连接这个进程
代码:
socket = new QLocalSocket(this);
socket->connectToServer("\\\\.\\pipe\\geth.ipc",QIODevice::ReadWrite);
QString str = socket->serverName();
qDebug(str.toStdString().data());

if(!socket->isValid())
{
qDebug( "my FAILED!");
}
socket->state();
QString str2 = socket->fullServerName();
qDebug(str2.toStdString().data());
connect(socket,SIGNAL(error(QLocalSocket::LocalSocketError)),this,SLOT(displayError(QLocalSocket::LocalSocketError)));
connect(socket,SIGNAL(connected()),this,SLOT(connectSuccess()));
结果:
1.在console里打印出了serverName(这个不能判断是否连接成功,只是个打印)
2.没有进入if条件的打印,表示这个socket是合法的
问题:我的connected()信号并没有触发,查看帮助手册,connected()信号只在连接成功后发射。我要怎样才能去成功连接这个ipc进行进程间通信了,是否有ipc路径不对的可能(但是geth.ipc里面的路径写的是上述路径),我要怎样解决这个问题呢
...全文
477 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
冷静忍耐 2016-07-13
  • 打赏
  • 举报
回复
你先要有QLocalServer的服务端吧 localServer = new QLocalServer(this); connect(localServer, SIGNAL(newConnection()), this, SLOT(localSocketConnect())); //有新的连接则响应槽函数 localServer->listen(serverName); //监听 然后就是新连接: socket->connectToServer("\\\\.\\pipe\\geth.ipc",QIODevice::ReadWrite); //ReadOnly或者可以

16,235

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧