首页 > 解决方案 > 为什么 QT 中的 CreateFile 不起作用,我怎样才能把它作为 QLocalSocket 或类似的

问题描述

我在我的旧开发人员 c++ borland 编辑器中运行了这段代码:

char address[30];
sprintf(address,"\\\\SERVER_NAME\\EXAMPLE\\ROUTE");
Handle pipe=CreateFile((LPTSTR) &address,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);

它在 borland 中工作,但是当我将相同的代码放在 Qt 中时,它不起作用。我不明白为什么,管道在 qt 中返回 INVALID_HANDLE_VALUE。

我的目标是它可以在 qt 中使用并使用 QLocalSocket 类或其他类似的类。

我试过了:

QLocalSocket * socket = new QLocalSocket(this);
connect(socket, QOverload<QLocalSocket::LocalSocketError>::of(&QLocalSocket::error),this, &Conexion::displayError);
socket->connectToServer("\\\\SERVER_NAME\\EXAMPLE\\ROUTE");

但它返回: QLocalSocket::ServerNotFoundError

非常感谢你,罗伯托

标签: qt

解决方案


没有明显的理由您的第一个代码示例应该使用 Borland 而不是 Qt,因为这是纯 Win32 代码。

如果您想找出它为什么不起作用,您必须在无法从 Windows 检索有用信息GetLastError()后立即调用。CreateFile()

因为QLocalSocket,您需要在尝试连接之前进行QLocalServer 聆听QLocalSocket


推荐阅读