org/doc/qt-4.8/1 functions html). An application using QAbstactSocket's connectoToHost function can remain address family agnostic by providing just the domain name and port number of the remote host. The Qt framework then performs the necessary DNS queries and chooses whether to use IPv4 or IPv6 for the communications, and performs possibly required fallbacks in the case when the preferred address does not yield a working connection. Once a connection been set up, the application can start using the connection. 3.9.3 IP Address Literals and Unique Resource Identifiers Applications may encounter textual IP address literals, such as IPv4 addresses like 192.0.2.1 or IPv6 addresses such as 2001: db8 0000 42 : 30, entered via user interfaces (not an API as such, but nevertheless an interface) or passed as URIs (see below). Applications have to be prepared to handle both types of addresses, including reserving space for displaying long IPv6 addresses (if the application displays addresses). In the face of literal IP addresses, applications may need to be able to use address family aware APIs correctly, unless the underlying API allows simply passing of IP literals without the caller being itself aware of the addresses. URIs are used by several application level protocols, such as HyperText Transfer Pro- tocol (HTTP). The IPv6 addressing format used in URIs is defined in 'Uniform Resource Identifier (URI): Generic Syntax' [133], which basically states that IPv6 address lit- erals are to be presented inside brackets as discussed in Section 3.1.9. The brackets help to distiguish colons used inside of the IPv6 addresses from the colon used to mark the used port. For example, an IPv6 address of 2001 db8 : 2 is presented as [2001 db8 : 2] and when combined with a port number, for example '80', the address is presented as [2001: db8 : 2] : 80. In the case of IPv6, a full HTTP URL could look like: http: [2001: db8 : 2] index. html. When it comes to applications, an IPv6 formatted URI does not always require IP address family 