Dor*_*ham 9 qt ipc qlocalsocket
我在我的IPC解决方案中使用Qlocalsocket,我能够启动服务器并接受来自QLocalSocket客户端的连接并进行良好的通信,没有任何问题.
但是我的问题发生在我杀死服务器的进程时,我不能让QLocalServer再次在同一个地方监听,我必须更改服务名称才能再次启动它,这在运行时环境是不可能的.
那么如何让前一个进程发布该名称呢?
这是我如何启动服务器:
m_server = new QLocalServer(this);
if (!m_server->listen("serviceUniqueName")) {
qDebug() << "Not able to start the Server";
return;
}
Run Code Online (Sandbox Code Playgroud)
Ale*_*xey 15
正如Amartel所指出的,如果服务器死机,您需要删除套接字文件.最好的方法是调用bool QLocalServer :: removeServer(const QString&name):
m_server = new QLocalServer(this);
QString serverName("serviceUniqueName");
QLocalServer::removeServer(serverName);
if (!m_server->listen(serverName)) {
qDebug() << "Not able to start the Server";
return;
}
Run Code Online (Sandbox Code Playgroud)
这样你的收听电话永远不会失败.
Qt帮助:
在Unix上,如果服务器崩溃而没有关闭,则listen会因AddressInUseError而失败.要创建新服务器,应删除该文件.在Windows上,两个本地服务器可以同时侦听同一个管道,但任何连接都将转到其中一个服务器.
因此,如果您使用*nix,则应删除文件"/ tmp/socket_name".
| 归档时间: |
|
| 查看次数: |
3186 次 |
| 最近记录: |