PHP / Perl C + + / Qt4 istemci / sunucu iletişimi için en iyi protokol

3 Cevap php

Ben bir Açık Kaynak kiosk yönetim sistemi, Libki yazarı değilim. Güncel sürümü, işlevsel olsa da, çok çok benim için bir öğrenme deneyimi oldu. Ben tam bir yeniden üzerinde çalışıyorum ve bir sabit zaman kullanmak için ne protokol karar yaşıyorum.

Sunucu PHP veya Perl ile yazılmış olacaktır. Bazı nadir protokolleri desteklemek için gereken büyük olasılıkla PHP çünkü Kütüphane yazılım kullanımı (SIP and NCIP). Şimdiye kadar sadece PHP bir SIP2 kütüphane buldum.

İstemci C + + / Qt4 yazılmıştır.

Ben istemci / sunucu iletişimi için RPC ve REST bakıyorum. Ben Qt4 için RPC istemci kütüphanelerini buldum ve DİNLENME zaten Qt4 kütüphanelerin parçasıdır.

Ben kaçırdığımız bir alternatif var mı? Şimdiye kadar, DİNLENME galibi gibi görünüyor.

3 Cevap

Orada Google'ın protobuf, ve PHP için bağlamaları bulabilirsiniz here.

Iyi olmadığını biliyorum, ama yapmak zorunda kavramının bir kanıtı için, ben Qt4 sunucu üzerinde bir TCP soketi kullanılır ve Mono / C # istemci ona bağlanmak istiyorum etmeyin. İşte benim kod kroki:

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));
}

Ben de komutları almak gerekir çünkü on_data_read() Muhtemelen, yerine sadece bir dosya adı XML alacağınızı unutmayın. Diğer alternatifler bellek, (bu koda benzer) bir unix soket paylaşılan ve olan size yüksekliği gitmek isterseniz: XMLRPC ya da soap, hatta dbus.

Qt / örnekleri / network / qt / örnekleri / dbus, qt / örnekleri / IPC içine bak.

Bu uygulama için REST hala en iyi çözüm olduğunu düşünüyorum ama size söz etmedi Bir alternatif, SOAP olduğunu.