Recommend crossplatform C++ UI and networking libraries

Things to take into consideration: - easy to use - fast - use underlying OS as much as feasable (like wxWidgets for UI)

Ones I am leaning towards are wxWidgets for UI and Boost for networking - how do they compare to others?

Answers


I've had good look with wxWidgets on the front end and boost::asio on the network end.

wxWidgets does have network classes built in, but you hit the wall quickly on them, and there's one or two big limitations. If you want to stay in the wx world, there's a package called wxCurl which is a fine package (I used it in the early days) that wraps libCurl with some wxWidgets idomatic C++.

In a previous project of mine (a network/file transfer heavy project) we ended up going with boost::asio, which had the advantage of not being all that hard of an API, easier-seeming to set up that libCRUL (although that may have gotten better, that was been several years now), and gives us a very generic networking core (boost can compile anywhere, even command line apps)


I hear good things about qt for GUI

Qt is a cross-platform application and UI framework. Using Qt, you can write web-enabled applications once and deploy them across desktop, mobile and embedded operating systems without rewriting the source code


For GUI I would strongly recommend using Qt. It is very powerful GUI framework that requires writing very few lines of code. It has very nice and easy to use model of signals and slots.

wxWidgets IMHO too modeled after MFC which has very bad model.

Networking: I would suggest go for Boost.Asio very powerful and nice. However if you want to integrate networking to GUI main loop you may try to use Qt classes for that, however I have no experience with them.


I've used XVT historically, which has been used commercially by thousands of companies.


Both Qt or wxWidgets can do networking even if it's not their first goal.

For more network centric libraries, apart from boost::asio, you can check ACE (Adaptative Communication Environment ) or POCO

Comparisons between these libraries have already been discussed on stackoverflow.


boost::asio seems to be very well written, and has a very clean API -- I am still trying to learn how well it is for shared-nothing multithreaded TCP/IP.

Your other choices might be Poco, or ACE. Poco's socket abstraction is quite naive --i.e., it only allows the Poco way of doing things. I've never heard anything good about ACE.

edit: Hmm, I'm re-examining ACE and its making more sense to me now (after having written a few networking apps) -- it might be suitable for my needs compared to ASIO. However, it is more than likely overkill for you. If my peers find out about this, I will be shunned till the end of time.


We have had good success using wxWidgets with boost::asio, both recommended for desktop-server development.


For GUI, I can recommend QT

For Networking ACE (Adaptive Communication Environment) or boost::asio.


Need Your Help

gnu autotools: Debug/Release targets?

c++ autotools autoconf automake

I've been looking for this for a while: I'm currently converting a medium-size program to autotools, coming from an eclipse-based method (with makefiles)

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.