39 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			39 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								#ifndef NETWORK_SERVER_LOOKUP_HPP__
							 | 
						||
| 
								 | 
							
								#define NETWORK_SERVER_LOOKUP_HPP__
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <tuple>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <QHostAddress>
							 | 
						||
| 
								 | 
							
								#include <QAbstractSocket>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class QString;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// Do a blocking DNS lookup using query as a destination host address
							 | 
						||
| 
								 | 
							
								// and port.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// query can be one of:
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// 1) "" (empty string) - use defaults
							 | 
						||
| 
								 | 
							
								// 2) ":nnnnn" - override default service port with port nnnnn
							 | 
						||
| 
								 | 
							
								// 3) "<valid-host-name>" - override default host address with DNS lookup
							 | 
						||
| 
								 | 
							
								// 4) "nnn.nnn.nnn.nnn" - override default host address with the IPv4 address given by nnn.nnn.nnn.nnn
							 | 
						||
| 
								 | 
							
								// 5) "[<valid-IPv6-address]" - override default host address with the given IPv6 address
							 | 
						||
| 
								 | 
							
								// 6) "<valid-host-name>:nnnnn" - use as per (3) & (2)
							 | 
						||
| 
								 | 
							
								// 7) "nnn.nnn.nnn.nnn:nnnnn" - use as per (4) & (2)
							 | 
						||
| 
								 | 
							
								// 8) "[<valid-IPv6-address]:nnnnn" - use as per (5) & (2)
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// The first host address matching the protocol and the service port
							 | 
						||
| 
								 | 
							
								// number are returned.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// If no suitable host address is found QHostAddress::Null will be
							 | 
						||
| 
								 | 
							
								// returned in the first member of the result tuple.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								std::tuple<QHostAddress, quint16>
							 | 
						||
| 
								 | 
							
								network_server_lookup (QString query
							 | 
						||
| 
								 | 
							
										       , quint16 default_service_port
							 | 
						||
| 
								 | 
							
										       , QHostAddress default_host_address = QHostAddress::LocalHost
							 | 
						||
| 
								 | 
							
										       , QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::AnyIPProtocol);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 |