2010-05-04 94 views
3

我是开放源代码自助服务终端管理系统Libki的作者。目前的版本虽然功能强大,但对我来说却是一种学习体验。我正在进行完整的重写,并且很难决定使用哪种协议。从PHP/Perl到C++/Qt4的客户端/服务器通信的最佳协议

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

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

我正在寻找用于客户端/服务器通信的RPC和REST。我发现了Qt4的RPC客户端库,而REST已经是Qt4库的一部分。

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

回答

0

不知道是否最好,但为了证明我不得不做的,我在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)); 
} 

注意on_data_read()我可能会得到XML,而不只是一个文件名,因为我需要还命令。其他选择是共享内存,unix套接字(与此代码类似),以及如果您想要继续:XMLRPC或SOAP,甚至dbus。

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

0

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