用于客户机/服务器通信的最佳协议,从PHP/Perl到C++/Qt4

用于客户机/服务器通信的最佳协议,从PHP/Perl到C++/Qt4,php,c++,perl,qt4,Php,C++,Perl,Qt4,我是开源信息亭管理系统Libki的作者。目前的版本,虽然功能强大,但对我来说是一次学习经历。我正在进行一次彻底的重写,很难决定使用什么协议 服务器将用PHP或Perl编写。最有可能是PHP,因为我需要支持库软件使用的一些不常见的协议,()。到目前为止,我只在PHP中找到了一个SIP2库 客户端是用C++/Qt4编写的 我正在研究用于客户机/服务器通信的RPC和REST。我已经找到了Qt4的RPC客户端库,REST已经是Qt4库的一部分 有没有我错过的其他选择?到目前为止,REST似乎是赢家。不知

我是开源信息亭管理系统Libki的作者。目前的版本,虽然功能强大,但对我来说是一次学习经历。我正在进行一次彻底的重写,很难决定使用什么协议

服务器将用PHP或Perl编写。最有可能是PHP,因为我需要支持库软件使用的一些不常见的协议,()。到目前为止,我只在PHP中找到了一个SIP2库

客户端是用C++/Qt4编写的

我正在研究用于客户机/服务器通信的RPC和REST。我已经找到了Qt4的RPC客户端库,REST已经是Qt4库的一部分


有没有我错过的其他选择?到目前为止,REST似乎是赢家。

不知道是否最好,但为了证明我必须做的概念,我在Qt4服务器上使用了TCP套接字,Mono/C客户端将连接到它。下面是我的代码的草图:

MainWindow::mainWindow()
{
    // more non relevant crap
    tcpServer = new QTcpServer(this);
    tcpServer->listen(QHostAddress::Any,3333);
    connect(tcpServer,SIGNAL(newConnection()),this,SLOT(on_new_serverConnection()));
}

void MainWindow::on_new_serverConnection()
{
    connection = tcpServer->nextPendingConnection();
    connect(connection, SIGNAL(readyRead()), this, SLOT(on_data_read()));
}

void MainWindow::on_data_read()
{
    QString s = connection->readAll();
    qDebug("file to load - %s", qPrintable(s));
}
请注意,在_data _read()上,我可能只会获取一个文件名,而不是XML,因为我还需要获取命令。其他的替代方案是共享内存、unix套接字(类似于此代码),如果您想升级,还可以使用XMLRPC或SOAP,甚至dbus


查看qt/examples/network/、qt/examples/dbus、qt/examples/ipc。

您没有提到的一个替代方案是SOAP,但对于这个应用程序,我认为REST仍然是最好的解决方案。

有Google的,您可以找到PHP的绑定