
Explore network programming with the Qt framework, covering fundamentals and cross-language concepts, then implement high-level protocols, web engine basics, a downloader, and a simple web browser.
Define computer networks as telecommunication components and explain how protocols, via RFCs, enable data exchange; relate OSI seven layers to the practical DCP IP model.
Explore network monitoring tools using Wireshark to capture and inspect packets between your computer and the internet, view protocol details, and analyze data sent and received.
Explore the physical layer, its cabling—actual cables and twisted pairs—and how hubs broadcast while switches forward data by addresses across bus, star, and ring topologies to manage csma/cd collisions.
Explore the datalink layer in a local area network, focusing on MAC addresses, the broadcast address, and Ethernet frames, including frame structure and 64–1518 byte length.
Learn how the internet protocol functions at the network layer, encapsulating IP datagrams in link frames, routing via routers, and using ICMP, IGMP, and ARP for IPv4 and IPv6.
Explore how ICMP operates as a service within the IP datagram to signal abnormal events, with an 8-byte header (type, code, checksum) and signals like destination unreachable and time exceeded.
Discover how arp uses ip addresses to discover mac addresses via broadcast requests and replies. Learn arp caching, proxy arp, reverse arp, and igmp.
Explore the internet group management protocol as part of ip datagrams, its use in multicast, and how each multicast group has its own ip address.
Explain how IP addresses are constructed, including IPv4 and the future IPv6, and identify network and host addresses with a subnet mask, classful origins, and CIDR notation.
Explore IPv6, the next generation addressing scheme designed to overcome IPv4 space limits with 128-bit addresses, and review the IPv6 header fields such as version, next header, and hop limit.
Explore how tcp at the transport layer enables reliable, connection-oriented, duplex communication between applications using port numbers, sequence numbers, and flags (syn, ack, fin, push) for connection setup and teardown.
Explore the user datagram protocol (UDP), a connectionless transport for real-time streaming within IP datagrams. Learn its simple header with source and destination ports and the optional checksum.
Decode how domain names map to IP addresses via the domain name system, DNS servers, root, top-level, and second-level domains, and port 80 used to fetch content.
Explore the ftp file transfer protocol as an application layer service built on tcp/ip, showing client and server roles, the control and data channels, and commands like get and put.
Learn how the HTTP protocol powers browser requests, DNS resolution, and server responses, including methods like get and post, and headers, with proxies, gateways, and tunnels enabling optional privacy.
Explore how ssl and tls protocols secure data in client-server communications by using public and private keys, certificate authorities, and certificate verification to encrypt and decrypt data.
Explore how Qt enables TCP/IP client-server programming, from low level network-layer sockets to high level application-layer protocols, and learn about peers, configuration, and management tools.
Explore high level network operations in Qt by using the network request queue, network access manager, and network reply to send requests, deliver replies, and manage cookies, encryption, and authentication.
Use Qt TCP socket classes to implement client and server networking, read and write data, retrieve peer address and port, and handle status with newConnection and nextPendingConnection.
Learn to use the Qt UDP socket class, inheriting from QIODevice, to read and write datagrams, handle incoming datagrams with readyRead, and convert data for use in your application.
Learn how to resolve host names with Qt network tools by performing DNS lookups using QHostInfo, using lookupHost and fromName to obtain IP addresses.
Learn how to use proxies in Qt with the NetworkProxyConfigure class to route connections, apply proxies to sockets (including UDP), and set a proxy for the whole application.
Configure network interfaces with QNetworkConfigurationManager and set parameters using QNetworkConfiguration. Manage sessions with QNetworkSession to start, apply configurations, and revert to defaults.
A web browser consists of a web engine and a chrome interface. Developers use prebuilt engines like Chromium via Qt WebEngine, building the browser user interface rather than the engine.
Explore Qt web engine architecture, including qm engine for widget apps, cute engine for quick apps, and the web engine core with view and page, history, profile, settings, and script.
Embed web content in a Qt application by using an engine view to display content, load content using load, and show it in the main window.
Learn to set up a Qt downloader project, implement a downloader class, and wire a button, progress bar, and filename label with download progress, errors, and finished signals.
Connect the button's click signal to the download slot, retrieve the URL as a QUrl, and use QNetworkAccessManager to perform the get request while monitoring progress.
Create an error handling slot in a Qt network app by using sender() to identify the emitting object, casting to QNetworkReply, and showing a QMessageBox with the error string.
Implement the downloader progress slot in Qt by setting the range from zero to the total bytes and updating the progress value with bytes received to calculate the download percentage.
Create a Qt-based downloader by implementing a save slot to download and save images (and any file) using QImage, QNetworkReply, and extension handling.
Set up a Qt-based web browser project by integrating a web engine into a main window subclass. Implement per-tab web engine widgets and page loading on enter.
Implement the add tab function by creating a window widget with a QWebEngineView in a zero-margin vertical layout, loading the URL, and setting it as the current tab.
Implement current page and load page slot in a Qt WebEngine tab, retrieve the current widget with findChild, validate the URL, load the page, and update the tab title.
Implement the top tab change and link change slots by updating the current page URL, the link text, and the page title from the engine view.
in this course we will discuss the following: