2009-06-30 7 views
5

In der Hoffnung, dass jemand hier über eine gute weiß: Ich bin auf der Suche nach einer (frei zu verwenden) C++ - Bibliothek mit einer Klassenhierarchie und Methoden ähnlich der Java API, mit mindestens der I/O & Netzwerk-Teil, wenn es speziell HTTP-Behandlung.C++ - Bibliothek mit einer Java-ähnlichen API

Ich arbeite hauptsächlich mit C & Java, aber für dieses spezielle Projekt C++ empfohlen wird, so dachte ich über die Übernahme einer guten Reihe von C++ - Bibliotheken ohne eine steile Lernkurve.

Vielen Dank im Voraus für jede Empfehlung.

Antwort

5

Qt ist IMHO sehr Java mögen. I.e. sie bevorzugen Java-Style Iterators über die STL. Qt enthält Netzwerk (examples) und viele andere Sachen (wie Skripting über Javascript)

+0

QT. Ich bin versucht, aber GPL zu gehen kommt nicht in Frage, das heißt, es wird vom Management abgelehnt. –

+2

Seine LGPL als Off-Version 4.5 –

+0

Der Troll-Tech-Link ist tot – johnchen902

5

Haben Sie sich die Boost Bibliotheken angesehen?

  • Boost. IOStreams bietet ein Framework zum Definieren von Streams, Stream-Puffern und E/A-Filtern.
  • Asio - Portable Vernetzung, einschließlich Sockets, Timer, Hostname Auflösung und Socket Iostreams.
  • Viele others ....

Die Boost-Bibliotheken bieten ähnliche Funktionen in Bezug auf die Java API verglichen, aber sie sind sehr viel 'look and feel' - entsprechend - wie eine C++ Bibliothek.

+0

Danke. Ich überprüfte Boost: Asio, aber es behandelt TCP, was bedeutet, dass, wenn ich HTTP mit Sessions/Cookies und Sachen handhaben muss, ich es selbst implementieren muss. Ich frage mich, ob es einen neuen Vorschlag ausschließlich für HTTP in der Arbeit gibt ... –

+0

Das cpp-netlib Projekt - http://sourceforge.net/projects/cpp-netlib - arbeitet an HTTP-Client-Unterstützung für die Aufnahme in Boost. –

0

Eine C++ - Bibliothek, die wie eine Java-Bibliothek aussah, wäre eine schlechte Bibliothek, IMHO. Die zwei Sprachen sind so sehr verschieden, dass das, was gutes Design für eins ist, fast zwangsläufig schlechtes Design für das andere sein wird.

+3

Eine C++ - Bibliothek, die die gleichen Schnittstellen wie eine Java-Bibliothek hat, wäre kein schlechtes Design-Imo. .NET war in der Lage, die gleichen Schnittstellen für einige sehr verschiedene Sprachen bereitzustellen, und C++ - Bibliotheken sind ziemlich gut. –

2

Es gibt auch die Möglichkeit, etwas wie POCO, die etwas einfacher ist, als etwas wie Boost verwenden, während immer noch plattformübergreifend.

Während ich in Java vor langer Zeit nur HTTP verwendet habe, sieht die Benutzeroberfläche der POCO-Bibliothek relativ einfach aus. Es gibt ein Beispiel für grundlegende FTP-Nutzung ein etwas wie folgt aus:

Poco::Net::FTPStreamFactory::registerFactory(); 
std::ofstream localFile(inputFile, std::ios_base::out | std::ios_base::binary); 
Poco::URI uri(inputURL); 
std::auto_ptr<std::istream> ptrFtpStream(Poco::Net::URIStreamOpener::defaultOpener().open(uri)); 
Poco::StreamCopier::copyStream(*ptrFtpStream.get(), localFile); 
+0

Ich habe es vorher überprüft, aber ich hätte gerne mehr Feedback von den Leuten hier. Vielen Dank. –

+0

@Rafael, Poco ist eine großartige Bibliothek, die auf dem stl aufbaut, allen C++ - Idiomen folgt und dennoch wie Java aussieht. Also ich denke, es ist eine gute Wahl für Sie. – StackedCrooked

0

Sie einen Blick auf Mindroid nehmen, die in erster Linie auf embeddded Programmierung orientiert ist:

Mindroid ist ein Anwendungs-Framework (mit Schwerpunkt auf Messaging und Parallelität), mit dem Sie Anwendungen erstellen können, die wiederverwendbare Komponenten verwenden - genau wie Android. Der Name Mindroid hat zwei verschiedene Bedeutungen. Auf der einen Seite ist Mindroid ein minimaler Satz von Kern-Android-Klassen und auf der anderen Seite bilden diese Klassen Android (zumindest meiner Meinung nach).