O'Reilly logo

Programming with Qt, 2nd Edition by Matthias Kalle Dalheimer

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 23. Qt Network Programming

Until now, we have only talked about using Qt for GUI programming. This is Qt’s main mission, but you can also do other things with it. For example, you can write network applications with the Qt network extension. This extension includes a number of classes that provide portable access to TCP/IP sockets on a low level, some higher-level classes that let you access network resources by specifying URLs, and two classes that provide general URL manipulation.

To show how to write network programs with Qt, this chapter contains two sample programs, a simple HTTP server, and a simple download client. You’ll also find information about which classes are available and what they can do for you.

Low-Level Socket Access

The classes QSocket, QServerSocket, QSocketDevice, QHostAddress, and QSocketNotifier provide low-level, platform-independent access to TCP/IP sockets. Of these classes, QSocketDevice is rarely used because it only provides a thin layer around the operating system socket functionality. QSocketNotifier integrates a system socket into the Qt event notification system and event loop by emitting a signal when data can be read from or written to the socket. You do not need this class if you use QSocket or QServerSocket because these two classes have their own facilities for emitting signals (which in turn use QSocketNotifier internally).

This leaves QSocket, QServerSocket, and QHostAddress for the general cases. Of these classes, QSocket and ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required