2010-05-04 106 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仍然是最佳解決方案。

相關問題