Spinning Topp Logo BlackTopp Studios
inc
Classes | Enumerations | Functions | Variables
Mezzanine::Network Namespace Reference

This namespace is for all the classes belonging to the Network Subsystem. More...

Classes

class  Connection
 A base class for the state of a connection made between peers. More...
 
class  DefaultNetworkManagerFactory
 A factory responsible for the creation and destruction of the default networkmanager. More...
 
class  FTPCommand
 A command that can be issued to an FTP server. More...
 
class  FTPMessage
 A base class for text based messages exchanged between FTP clients and servers. More...
 
class  FTPResponse
 A response to a command generated by a FTP server. More...
 
struct  HeaderField
 Convenience class for storing Header fields in internet messaging protocols. More...
 
class  HTTPClient
 
  More...
 
class  HTTPMessage
 A base class for HTTP text parsing classes. More...
 
class  HTTPRequest
 A simple class to facilitate the creation of HTTP requests. More...
 
class  HTTPResponse
 A response to an HTTPRequest generated by an HTTP server. More...
 
class  IPAddress
 This is a simple class for representing IP addresses used throughout the Network subsystem. More...
 
class  IPv4Socket
 A socket class using the IP version 4 protocol. More...
 
class  IPv6Socket
 A socket class using the IP version 6 protocol. More...
 
class  NetworkManager
 This is the central management class for all network I/O operations. More...
 
class  Packet
 A base class for packing information to be transferred over the network. More...
 
class  PlatformSocket
 This is helper class for managing platform specific data of socket implementations. More...
 
class  Socket
 This is a basic socket interface for the transmission and retrieval of packets. More...
 
struct  SocketDescription
 A convenience class storing socket data that can be returned from utility methods and used to create and init new sockets. More...
 
class  SocketHandle
 Used to allow type inference on PlatformSocket constructors. More...
 
class  SocketResultContainer
 A special container class used to store the results from a call to "ResolveDomainName". More...
 
class  SystemAddress
 A simple class that stores a complete set of information for establishing connections. More...
 
class  TCPSocket
 A socket class using the TCP stream protocol. More...
 
class  TCPv4Socket
 A TCP socket that uses IPv4 internet addresses for connections. More...
 
class  TCPv6Socket
 A TCP socket that uses IPv6 internet addresses for connections. More...
 
class  UDPSocket
 A socket class using the User Datagram Protocol. More...
 
class  UDPv4Socket
 A UDP socket that uses IPv4 internet addresses for transmissions. More...
 
class  UDPv6Socket
 A UDP socket that uses IPv6 internet addresses for transmissions. More...
 
class  URI
 A helper class for the reading and using of Uniform Resource Identifiers. More...
 

Enumerations

enum  FTPCommandList {
  FCL_Invalid = 0, FCL_ACCT = 1, FCL_CDUP, FCL_CWD,
  FCL_HOST, FCL_PASS, FCL_QUIT, FCL_REIN,
  FCL_SMNT, FCL_USER, FCL_EPRT, FCL_EPSV,
  FCL_MODE, FCL_PASV, FCL_PORT, FCL_STRU,
  FCL_TYPE, FCL_APPE, FCL_DELE, FCL_LIST,
  FCL_NLST, FCL_RETR, FCL_STOR, FCL_STOU,
  FCL_ABOR, FCL_ALLO, FCL_FEAT, FCL_HELP,
  FCL_LANG, FCL_MDTM, FCL_MKD, FCL_MLSD,
  FCL_MLST, FCL_NOOP, FCL_OPTS, FCL_PWD,
  FCL_REST, FCL_RMD, FCL_RNFR, FCL_RNTO,
  FCL_SITE, FCL_SIZE, FCL_STAT, FCL_SYST,
  FCL_ADAT, FCL_AUTH, FCL_CCC, FCL_CONF,
  FCL_ENC, FCL_MIC, FCL_PBSZ, FCL_PROT,
  FCL_LPRT, FCL_LPSV, FCL_XCUP, FCL_XCWD,
  FCL_XMKD, FCL_XPWD, FCL_XRCP, FCL_XRMD,
  FCL_XRSQ, FCL_XSEM, FCL_XSEN
}
 This enum is a listing of the commands that can be issued to an FTP server. More...
 
enum  FTPDataType { FDT_ASCII = 'A', FDT_EBCDIC = 'E', FDT_Binary = 'I', FDT_Local = 'L' }
 This enum is a listing of the available data types to transfer as with FTP. More...
 
enum  FTPResponseCode {
  FRC_Invalid = 0, FRC_RestartMarkerReply = 110, FRC_ServiceReadySoon = 120, FRC_DataConnectionAlreadyOpen = 125,
  FRC_DataConnectionOpening = 150, FRC_Ok = 200, FRC_PointlessCommand = 202, FRC_SystemStatus = 211,
  FRC_DirectoryStatus = 212, FRC_FileStatus = 213, FRC_Help = 214, FRC_SystemType = 215,
  FRC_ServiceReady = 220, FRC_ServiceClosing = 221, FRC_DataConnectionOpen = 225, FRC_DataConnectionClosing = 226,
  FRC_EnteringPassive = 227, FRC_EnteringLongPassive = 228, FRC_EnteringExtendedPassive = 229, FRC_UserLoggedIn = 230,
  FRC_UserLoggedOut = 231, FRC_LogoutAcknowledged = 232, FRC_AuthenticationSuccess = 234, FRC_FileActionComplete = 250,
  FRC_PathnameCreated = 257, FRC_NeedPassword = 331, FRC_NeedAccount = 332, FRC_FileActionPending = 350,
  FRC_ServiceUnavailable = 421, FRC_DataConnectionFailed = 425, FRC_ConnectionClosedUnexpectedly = 426, FRC_BadUserOrPass = 430,
  FRC_HostUnavailable = 434, FRC_FileActionFailed = 450, FRC_LocalError = 451, FRC_InsufficientStorage = 452,
  FRC_SyntaxError = 501, FRC_BadCommand = 502, FRC_BadCommandSequence = 503, FRC_BadParameter = 504,
  FRC_NotLoggedIn = 530, FRC_InsufficientPermissions = 532, FRC_FileUnavailable = 550, FRC_PageTypeUnknown = 551,
  FRC_ExceededAllocation = 552, FRC_NameNotAllowed = 553, FRC_IntegrityReply = 631, FRC_ConfAndIntegReply = 632,
  FRC_ConfidentialityReply = 633
}
 This enum is a listing of the response codes that can be used in response to FTP commands. More...
 
enum  FTPSecurityLevel { FSL_Clear = 'C', FSL_Safe = 'S', FSL_Confidential = 'E', FSL_Private = 'P' }
 This enum is a listing of the potential security levels that can be used on an FTPS data channel. More...
 
enum  FTPStructureMount { FSM_File = 'F', FSM_Record = 'R', FSM_Page = 'P' }
 This enum is a listing of the available file system structures to be transferred, as recognized by FTP. More...
 
enum  FTPTransferMode { FTM_Stream = 'S', FTM_Block = 'B', FTM_Compressed = 'C' }
 This enum is a listing of the available ways data can be transferred over FTP. More...
 
enum  HighLevelProtocol {
  HLP_Invalid = 0, HLP_FTP = 1, HLP_FTPS = 2, HLP_HTTP = 4,
  HLP_HTTPS = 8, HLP_SMTP = 16
}
 This is an enum listing for protocols used and recognized by software. More...
 
enum  HTTPRequestMethod {
  HRM_Invalid = 0, HRM_GET = 1, HRM_HEAD = 2, HRM_POST = 3,
  HRM_OPTIONS = 4, HRM_PUT = 5, HRM_DELETE = 6, HRM_TRACE = 7,
  HRM_CONNECT = 8, HRM_PATCH = 9, HRM_PROPFIND = 10, HRM_PROPPATCH = 11,
  HRM_MKCOL = 12, HRM_COPY = 13, HRM_MOVE = 14, HRM_LOCK = 15,
  HRM_UNLOCK = 16
}
 This enum is a listing of commonly supported HTTP request methods. More...
 
enum  HTTPStatusCode {
  HSC_Invalid = 0, HSC_Continue = 100, HSC_SwitchingProtocols = 101, HSC_Processing = 102,
  HSC_Ok = 200, HSC_Created = 201, HSC_Accepted = 202, HSC_NonAuthoritativeInfo = 203,
  HSC_NoContent = 204, HSC_ResetContent = 205, HSC_PartialContent = 206, HSC_MultiStatus = 207,
  HSC_AlreadyReported = 208, HSC_IMUsed = 226, HSC_MultipleChoices = 300, HSC_MovedPermanently = 301,
  HSC_Found = 302, HSC_SeeOther = 303, HSC_NotModified = 304, HSC_UseProxy = 305,
  HSC_SwitchProxy = 306, HSC_TemporaryRedirect = 307, HSC_PermanentRedirect = 308, HSC_BadRequest = 400,
  HSC_Unauthorized = 401, HSC_PaymentRequired = 402, HSC_Forbidden = 403, HSC_NotFound = 404,
  HSC_MethodNotAllowed = 405, HSC_NotAcceptable = 406, HSC_ProxyAuthenticationRequired = 407, HSC_RequestTimeout = 408,
  HSC_Conflict = 409, HSC_Gone = 410, HSC_LengthRequired = 411, HSC_PreconditionFailed = 412,
  HSC_PayloadTooLarge = 413, HSC_RequestURITooLong = 414, HSC_UnsupportedMediaType = 415, HSC_RequestRangeNotSatisfiable = 416,
  HSC_ExpectationFailed = 417, HSC_ImATeapot = 418, HSC_AuthenticationTimeout = 419, HSC_MisdirectedRequest = 421,
  HSC_UnprocessableEntity = 422, HSC_Locked = 423, HSC_FailedDependency = 424, HSC_UpgradeRequired = 426,
  HSC_PreconditionRequired = 428, HSC_TooManyRequests = 429, HSC_RequestHeaderFieldsTooLarge = 431, HSC_InternalServerError = 500,
  HSC_NotImplemented = 501, HSC_BadGateway = 502, HSC_ServiceUnavailable = 503, HSC_GatewayTimeout = 504,
  HSC_HTTPVersionNotSupported = 505, HSC_VariantAlsoNegotiates = 506, HSC_InsufficientStorage = 507, HSC_LoopDetected = 508,
  HSC_NotExtended = 510, HSC_NetAuthenticationRequired = 511
}
 This enum is a listing of HTTP status codes that can be returned in response to a request. More...
 
enum  IPv4LevelOptions { IPv4Opts_MulticastLoop = IP_MULTICAST_LOOP, IPv4Opts_MulticastTTL = IP_MULTICAST_TTL, IPv4Opts_OptionsHeader = IP_OPTIONS, IPv4Opts_TimeToLive = IP_TTL }
 An enum for the configurable options that exist on the IPv4 protocol level.
 
enum  IPv6LevelOptions { IPv6Opts_MulticastHops = IPV6_MULTICAST_HOPS, IPv6Opts_MulticastLoop = IPV6_MULTICAST_LOOP, IPv6Opts_UnicastHops = IPV6_UNICAST_HOPS, IPv6Opts_V6Only = IPV6_V6ONLY }
 An enum for the configurable options that exist on the IPv6 protocol level.
 
enum  MsgFragValues
 An enum for the easy mapping of the actual values needed to toggle IPv4 fragmentation.
 
enum  NetworkLayerProtocol {
  NLP_Invalid = 0, NLP_ICMP = 1, NLP_ICMPv6 = 2, NLP_IGMP = 4,
  NLP_IPv4 = 8, NLP_IPv6 = 16
}
 This is an enum listing for recognized protocols on Layer 3 of the OSI model. More...
 
enum  SocketLevelOptions {
  SockOpts_Broadcast = SO_BROADCAST, SockOpts_KeepAlive = SO_KEEPALIVE, SockOpts_DebugInfo = SO_DEBUG, SockOpts_DontRoute = SO_DONTROUTE,
  SockOpts_ReuseAddress = SO_REUSEADDR, SockOpts_RecieveBufSize = SO_RCVBUF, SockOpts_SendBufSize = SO_SNDBUF
}
 An enum for the configurable options that exist on the socket level.
 
enum  SocketOptionLevel {
  Sol_IPv4 = IPPROTO_IP, Sol_IPv6 = IPPROTO_IPV6, Sol_TCP = IPPROTO_TCP, Sol_UDP = IPPROTO_UDP,
  Sol_Socket = SOL_SOCKET
}
 An enum for the different configurable levels of socket options.
 
enum  SocketShutdown { SS_DontReceive = 0, SS_DontSend = 1, SS_DontSendOrReceive = 2 }
 This is a small enum used for socket shutdown parameters. More...
 
enum  TCPLevelOptions { TCPOpts_NoDelay = TCP_NODELAY }
 An enum for the configurable options that exist on the TCP protocol level.
 
enum  TransportLayerProtocol { TLP_Invalid = 0, TLP_SCTP = 1, TLP_TCP = 2, TLP_UDP = 4 }
 This is an enum listing for recognized protocols on Layer 4 of the OSI model. More...
 
enum  UDPLevelOptions
 An enum for the configurable options that exist on the UDP protocol level.
 
enum  WellKnownPorts {
  WKP_FTPData = 20, WKP_FTPControl = 21, WKP_SSH = 22, WKP_Telnet = 23,
  WKP_SMTP = 25, WKP_HTTP = 80, WKP_NNTP = 119, WKP_LDAP = 389,
  WKP_HTTPS = 443, WKP_RTSP = 554, WKP_FTPSData = 989, WKP_FTPSControl = 990,
  WKP_SIP = 5060, WKP_SIPS = 5061, WKP_XMPP = 5222
}
 A listing of commonly used ports for various frequently used protocols.
 

Functions

void BuildURIPath (String &ToBuild, const StringVector &Segments)
 
UInt16 ConvertHostToNetworkByteOrder (const UInt16 ToConvert)
 Converts a UInt16 from the host byte order to network byte order. More...
 
UInt32 ConvertHostToNetworkByteOrder (const UInt32 ToConvert)
 Converts a UInt32 from the host byte order to network byte order. More...
 
short int ConvertLayer3ProtocolType (const NetworkLayerProtocol Protocol)
 Converts from a Mezzanine address protocol type to it's internal counterpart. More...
 
NetworkLayerProtocol ConvertLayer3ProtocolType (const short int Protocol)
 
NetworkLayerProtocol MEZZ_LIB ConvertLayer3ProtocolType (const int Protocol)
 Converts from an internal address protocol type to it's Mezzanine counterpart. More...
 
int ConvertLayer4ProtocolType (const TransportLayerProtocol Protocol)
 Converts from a Mezzanine transport protocol type to it's internal counterpart. More...
 
TransportLayerProtocol ConvertLayer4ProtocolType (const int Protocol)
 Converts from an internal transport protocol type to it's Mezzanine counterpart. More...
 
UInt16 ConvertNetworkToHostByteOrder (const UInt16 ToConvert)
 Converts a UInt16 from the network byte order to host byte order. More...
 
UInt32 ConvertNetworkToHostByteOrder (const UInt32 ToConvert)
 Converts a UInt32 from the network byte order to host byte order. More...
 
SocketDescription ConvertToSocketDescription (const sockaddr_storage &BerkAddr)
 Converts a Berkeley sockets address to a Mezzanine socket descriptor. More...
 
sockaddr_storage ConvertToSocketStorage (const SystemAddress &MezzAddr)
 Converts a Mezzanine address to a Berkeley sockets address. More...
 
sockaddr_storage ConvertToSocketStorage (const SocketDescription &MezzAddr)
 Converts a Mezzanine address to a Berkeley sockets address. More...
 
int ConvertToSocketType (const TransportLayerProtocol Protocol)
 Converts from a Mezzanine transport protocol type to it's internal counterpart. More...
 
TransportLayerProtocol ConvertToSocketType (const int SockType)
 Converts from an internal transport protocol type to it's Mezzanine counterpart. More...
 
SystemAddress ConvertToSystemAddress (const sockaddr_storage &BerkAddr)
 Converts a Berkeley sockets address to a Mezzanine address. More...
 
String MergeURIPaths (const String &Base, const String &Relative)
 
Ret resize (IPv6BinaryLength, 0)
 
SocketResultContainer ResolveDomainName (const String &DomainName, const UInt16 Port=0, const NetworkLayerProtocol NLP=Network::NLP_Invalid, const TransportLayerProtocol TLP=Network::TLP_Invalid)
 Performs a DNS lookup with the provided domain name and service. More...
 
SocketResultContainer ResolveNumericHost (const IPAddress &Address, const UInt16 Port=0, const TransportLayerProtocol TLP=Network::TLP_Invalid)
 Performs a DNS lookup with the provided domain name and port. More...
 
memset & v6Test (in6_addr)
 

Variables

memcpy &[0][0] Ret
 
const Integer SE_AccessDenied
 Insufficient access permissions to perform specified socket operation.
 
const Integer SE_AddrInUse
 The address specified for binding is already in use by another socket.
 
const Integer SE_AddrNotAvail
 The address specified is not valid in the current context.
 
const Integer SE_AFNotSupported
 The system does not have the specified address family installed or configured. This is mostly interchangable with SE_PFNotSupported.
 
const Integer SE_AlreadyConnected
 The socket is already connected. Additional connections are not supported.
 
const Integer SE_AlreadyInProgress
 The socket is non-blocking and an operation is already in progress.
 
const Integer SE_ConnectionAborted
 The connection was aborted by software on the local host.
 
const Integer SE_ConnectionDropped
 The connection was dropped. Usually occurs after keep-alive detected a failure while an operation was in progress.
 
const Integer SE_ConnectionRefused
 The connection was refused. The remote host doesn't like you. Probably because you smell funny. Or slightly more likely no application was running on the specified port.
 
const Integer SE_ConnectionReset
 The connection was reset/closed by the remote host. This can also occur if keep-alive detected a failure.
 
const Integer SE_ConnectionTimeout
 The connection timed out. The connect failed because the remote host didn't respond within the timeout peroid.
 
const Integer SE_DestAddrReq
 Specifying a destination address is required for the erroring operation. This often applies to a socket that isn't connected or has no peer address set in the socket call.
 
const Integer SE_HostIsDown
 The operation failed because the remote host is down or doesn't exist.
 
const Integer SE_HostUnreachable
 No route to the specified host could be found.
 
const Integer SE_Interrupted
 The thread or process running a socket operation was terminated prematurely.
 
const Integer SE_InvalidAddr
 The address data provided was faulty or invalid.
 
const Integer SE_InvalidOperation
 The operation requested is not supported for the socket provided. For example "accept" being called on a datagram socket.
 
const Integer SE_InvalidParam
 An argument/parameter was provided to a socket operation.
 
const Integer SE_InvalidProtoOpt
 An invalid option level was specified for a call setting or getting a socket option.
 
const Integer SE_InvalidProtoType
 The specified protocol is of the wrong type for the socket type specified. This error occurs on socket creation.
 
const Integer SE_IOLimit
 Too many IO handles (Files and sockets share a pool) are open. This may be a global, process, or thread limit depending on platform.
 
const Integer SE_MessageSize
 The message to be sent through a socket is too large. The buffer provided to be sent on a datagram socket was larger than the internal buffer or another network limit.
 
const Integer SE_NetworkDown
 The operation encountered a dead network. This could be because of a failure of the network system, the interface, of the local network itself.
 
const Integer SE_NetworkNotReady
 The OS modules needed for networking are unavailable.
 
const Integer SE_NetworkUnreachable
 The operation could not find a valid route to the remote host specified.
 
const Integer SE_NoBufferSpace
 Either the OS lacked sufficient buffer space or the queue was full.
 
const Integer SE_NonSocket
 Attempting to perform a socket operation on a handle that does not belong to a valid socket.
 
const Integer SE_NotConnected
 The socket is not connected. Operations requiring a connection cannot be performed.
 
const Integer SE_NowInProgress
 The socket is non-blocking and the operation cannot be completed immediately, but is now in progress.
 
const Integer SE_PFNotSupported
 The system does not have the specified protocol family installed or configured. This is mostly interchangable with SE_AFNotSupported.
 
const Integer SE_ProtoNotSupported
 The system does not have the specified protocol installed or configured.
 
const Integer SE_SocketNotSupported
 Either the specified socket type does not exist or support for the specified socket type with the specified address family does not exist on the system.
 
const Integer SE_SocketShutdown
 The socket has already been shut down and operations cannot be performed on it.
 
const Integer SE_Uninitialized
 The OS modules for networking haven't been started.
 
const Integer SE_Unknown = -1
 An unknown error occured. This is for when our errors error.
 
const Integer SE_WouldBlock
 A resource is temporarily unavailable. This can be returned from operations on non-blocking sockets that cannot be completed immediately.
 
in6_addr v6Test
 

Detailed Description

This namespace is for all the classes belonging to the Network Subsystem.

Our Network subsystem is based a wrapper/extension on top of berkely sockets on Unix systems, and winsock on windows systems.

Enumeration Type Documentation

This enum is a listing of the commands that can be issued to an FTP server.

This is a complete listing of the commands listed for the FTP standard in RFCs 959, 1639, 2228, 2389, 2428, 2640, 7151, and

  1. Some commands expect arguments, some do not. FTP connections must start with the command connection, from the client to the server. Once established, the client needs to authenticate with the server using a login. In most cases using an "anonymous" account is sufficient. Once authenticated some information for the data connection is needed. FTP can operate in active or passive mode. In active mode you would send a PORT command providing the IP address and Port number to connect to for the data transfer. Due to NATs and Proxies however this is rarely used, instead opting for passive mode. In passive mode you send a PASV command. The server will then respond with an IP address and Port number on which it is listening and will expect an incoming connection. Once the data connection is established actual transfers can take place.
Enumerator
FCL_Invalid 

Not an actual command. Used for error conditions.

FCL_ACCT 

Account. Identifies the users account. While similar sounding to the USER command, some servers differentiate the two when determining access.

FCL_CDUP 

Change to Parent Directory. Changes the directory for file/folder operations to the parent of the current directory.

FCL_CWD 

Change Working Directory. Changes the current directory for file/folder operations.

FCL_HOST 

Host. Similar to HTTP Host header, allows an FTP client to provide an FTP URI Authority to specify a sub-server(virtual machine, for example) to be directed to.

FCL_PASS 

Password. The users password for authentication.

FCL_QUIT 

Logout. Logs out of the FTP server and closes all connections. Pending transfers are allowed to finish and be responded to first.

FCL_REIN 

Reinitialize. Sets the connection back to a starting state. User is logged out but the command connection is preserved.

FCL_SMNT 

Structure Mount. Allows the user to mount a file system data structure without requiring the connection to be restarted. See FTPStructureMount enum.

FCL_USER 

User Name. The user name to be used for authentication to the FTP server. In most cases the user name provided can/will be "anonymous".

FCL_EPRT 

Extended Port. This is similar to LPRT, but with friendlier syntax. Takes a "|" delimited String starting with 1(IPv4) or 2(IPv6), then the printable address, then the printable port number.

FCL_EPSV 

Extended Passive. This is similar to LPSV, but with friendlier syntax. The format is identical to the EPRT command.

FCL_MODE 

Transfer Mode. Sets how the data will be transferred from the source to destination. See FTPTransferMode enum.

FCL_PASV 

Passive. Requests the server go into passive mode for the connection. Going into passive mode tells the server to expect an incoming connection from the client, instead of creating one itself. Format is expressed the same way as the PORT command.

FCL_PORT 

Data Port. Specifies the IP/Port on which to establish the data connection. Expressed in 6 comma separated sections of values 0-255. First four are IP address, last two are the port bits.

FCL_STRU 

File Structure. Specifies the structure being transferred. Will almost never need to be used as the default is for files. Can also be set to Record or Page structure. See FTPStructureMount enum.

FCL_TYPE 

Data Type. Sets the type of data requested the file be in for downloads or the type of data that the file being uploaded is in, depending on the operation. See FTPDataType enum.

FCL_APPE 

Append. Appends the contents of the transfer to an existing file at the destination. If the file does not exist it will be created.

FCL_DELE 

Delete. Deletes the file specified in the argument.

FCL_LIST 

List. Gets information on the current directory. Either files or directories other than the current one may be specified, in which case it will return information on the specified file/directory. Format is undefined.

FCL_NLST 

Name List. Same as the LIST command, but only specifying names so as to make it easier to parse for machine parsing.

FCL_RETR 

Retrieve. Downloads a file from the server, expecting a filename at the source as the argument.

FCL_STOR 

Store. Uploads a file to the server, expecting a filename to be given to the file at the destination as the argument.

FCL_STOU 

Store Unique. This is the same as STOR (Store), but forces the name of the file at the destination to be unique.

FCL_ABOR 

Abort. Aborts the currently active file transfer.

FCL_ALLO 

Allocate. Requests the server allocate space for a file in advance. Many servers don't require this. Expects a decimal number expressing the size to allocate as the argument.

FCL_FEAT 

Features. Requests a listing of the available features/extensions on the server. No argument needed. Format defined in RFC 2389.

FCL_HELP 

Help. Another command may be specified as an argument to get details on it's implementation status on the server. If no argument is specified then it should return a listing of supported commands.

FCL_LANG 

Language. Requests the server change it's response message language to a different language. Use the FEAT command to determine supported languages.

FCL_MDTM 

Modification Time. Gets the time a file was last modified. Argument should be a file name. The format for the time returned in the response is "YYYYMMDDHHMMSS" with an optional dot separated fraction of a second.

FCL_MKD 

Make Directory. Creates a new directory on the server with the name provided in the argument.

FCL_MLSD 

Machine List Directory. Gets a machine friendly listing of all the files in the specified directory. If no directory is specified the current directory is used. The format is defined in RFC 3659, section 7.2.

FCL_MLST 

Machine List. Gets a machine friendly listing of information on the specified file. The format is defined in RFC 3659, section 7.2.

FCL_NOOP 

No Operation. This command does nothing and asks the server to do nothing but send a basic response. Used to keep connections alive and not timeout.

FCL_OPTS 

Options. Enables command specific options for the next command issued. Argument must be the command name followed by the options to be applied, separated by a space.

FCL_PWD 

Print Working Directory. Requests the pathname of the current directory for FTP operations.

FCL_REST 

Restart. The point where the file transfer is to begin. For files, the argument should an integer representing the byte position where the transfer should start.

FCL_RMD 

Remove Directory. Deletes the directory (and all files under it) specified in the argument from the server.

FCL_RNFR 

Rename From. The pathname of the file to be renamed. This simple selects the file the operation is to be performed on. Must be followed by a RNTO command.

FCL_RNTO 

Rename To. The new pathname of the file being renamed. This command must be preceded by a RNFR command to select which file should be renamed.

FCL_SITE 

Site. Executes a command that is not in the standard specific to the connected server. The argument is the command to be executed.

FCL_SIZE 

File Size. Gets the size of a specified file. Argument is a file and the response will contain the size in bytes it would be if it were transferred. The actual value can change based on the TYPE setting.

FCL_STAT 

Status. Requests the current status of the FTP server or the current executing FTP operation on the server. If a file is specified as an argument then it can act like LIST.

FCL_SYST 

System. Requests an identifier for the type of system the server is operating on as well as the default transfer mode used by the server.

FCL_ADAT 

Authentication/Security Data. A String of Base64 encoded data necessary to complete the authentication/verify the user.

FCL_AUTH 

Authentication/Security Mechanism. Declares the desired means of protection on the FTP connection(s), such as "TLS" or "SSL".

FCL_CCC 

Clear Command Channel. Clears the command stream of protected status, reverting to plain-text transmissions. Useful if AUTH is used just to verify identity.

FCL_CONF 

Confidentiality Protected Command. Generic command for allowing the configuration of confidentiality settings on the specified security mechanism. Not used with SSL/TLS.

FCL_ENC 

Privacy Protected Command. Generic command for allowing the configuration of privacy settings on the specified security mechanism. Not used with SSL/TLS.

FCL_MIC 

Integrity Protected Command. Generic command for allowing the configuration of integrity settings on the specified security mechanism. Not used with SSL/TLS.

FCL_PBSZ 

Protection BufferSize. Sets the maximum size (in bytes, max of 32-bit UInt) of the encoded blocks to be sent over the command channel. Must occur after an AUTH command and before a PROT command.

FCL_PROT 

Data Channel Protection Level. Sets the security to be used on the data channel. See FTPSecurityLevel enum.

FCL_LPRT 

Long Port. Obsolete command. Similar to the PORT command, but permits larger addresses. The format is comma separated bytes. Starts with an address family, then address size followed by address bytes, then port size followed by port bytes.

FCL_LPSV 

Long Passive. Obsolete command. Similar to the PASV command, but permits larger addresses. Format is identical to the LPRT command.

FCL_XCUP 

Change to Parent Directory. Obsolete command, but can be used an an alias for CDUP to provide backwards compatibility.

FCL_XCWD 

Change Working Directory. Obsolete command, but can be used an an alias for CWD to provide backwards compatibility.

FCL_XMKD 

Make Directory. Obsolete command, but can be used an an alias for MKD to provide backwards compatibility.

FCL_XPWD 

Print Working Directory. Obsolete command, but can be used an an alias for PWD to provide backwards compatibility.

FCL_XRCP 

Unknown Meaning. Obsolete command, do not use. Listed here for error detection server side. Use of this command is always an error.

FCL_XRMD 

Remove Directory. Obsolete command, but can be used an an alias for RMD to provide backwards compatibility.

FCL_XRSQ 

Unknown Meaning. Obsolete command, do not use. Listed here for error detection server side. Use of this command is always an error.

FCL_XSEM 

Send to Mail. Obsolete command, do not use. Listed here for error detection server side. Use of this command is always an error.

FCL_XSEN 

Send to Terminal. Obsolete command, do not use. Listed here for error detection server side. Use of this command is always an error.

Definition at line 68 of file networkenumerations.h.

This enum is a listing of the available data types to transfer as with FTP.

Enumerator
FDT_ASCII 

Plain text data. This is the default type.

FDT_EBCDIC 

Extended Binary Coded Decimal Interchange Code. That was a mouthful. An 8-bit IBM encoding. FTP supports it, sorta. So it's here.

FDT_Binary 

Binary data. The "I" is for Image, which when FTP was made was figured to be the most common and often exclusive use of binary transfers with FTP.

FDT_Local 

The local binary type. Is immediately followed by a number indicating the byte size of the system. "L8" for example.

Definition at line 142 of file networkenumerations.h.

This enum is a listing of the response codes that can be used in response to FTP commands.

Enumerator
FRC_Invalid 

Not an actual return code, used in error conditions.

FRC_RestartMarkerReply 

Restart marker reply.

FRC_ServiceReadySoon 

Service ready in nnn minutes.

FRC_DataConnectionAlreadyOpen 

Data connection already open; transfer starting.

FRC_DataConnectionOpening 

File status okay; about to open data connection.

FRC_Ok 

Command acknowledged and completed.

FRC_PointlessCommand 

Command not implemented, superfluous at this site.

FRC_SystemStatus 

System status, or system help reply.

FRC_DirectoryStatus 

Directory status.

FRC_FileStatus 

File status.

FRC_Help 

Help message.On how to use the server or the meaning of a particular non-standard command.

FRC_SystemType 

Name of system type.

FRC_ServiceReady 

Service ready for new user.

FRC_ServiceClosing 

Service closing control connection.

FRC_DataConnectionOpen 

Data connection open; no transfer in progress.

FRC_DataConnectionClosing 

Closing data connection. Requested file action successful (for example, file transfer or file abort).

FRC_EnteringPassive 

Entering Passive Mode.

FRC_EnteringLongPassive 

Entering Long Passive Mode.

FRC_EnteringExtendedPassive 

Entering Extended Passive Mode.

FRC_UserLoggedIn 

User logged in, proceed.

FRC_UserLoggedOut 

User logged out; service terminated.

FRC_LogoutAcknowledged 

Logout command noted, will complete when transfer done.

FRC_AuthenticationSuccess 

Specifies that the server accepts the authentication mechanism specified by the client, and the exchange of security data is complete.

FRC_FileActionComplete 

Requested file action okay, completed.

FRC_PathnameCreated 

The file or directory was successfully created.

FRC_NeedPassword 

User name okay, need password.

FRC_NeedAccount 

Need account for login.

FRC_FileActionPending 

Requested file action pending further information.

FRC_ServiceUnavailable 

Service not available, closing control connection.

FRC_DataConnectionFailed 

Can't open data connection.

FRC_ConnectionClosedUnexpectedly 

Connection closed; transfer aborted.

FRC_BadUserOrPass 

Invalid username or password.

FRC_HostUnavailable 

Requested host unavailable.

FRC_FileActionFailed 

Requested file action not taken.

FRC_LocalError 

Requested action aborted. Local error in processing.

FRC_InsufficientStorage 

Requested action not taken due to lack of storage space.

FRC_SyntaxError 

Syntax error in parameters or arguments.

FRC_BadCommand 

Command not implemented.

FRC_BadCommandSequence 

Bad sequence of commands. A command is issued without a prerequisite command being completed can cause this.

FRC_BadParameter 

Command not implemented for that parameter.

FRC_NotLoggedIn 

Not logged in.

FRC_InsufficientPermissions 

Need account for storing files.

FRC_FileUnavailable 

Requested action not taken. File unavailable.

FRC_PageTypeUnknown 

Requested action aborted. Page type unknown.

FRC_ExceededAllocation 

Requested file action aborted. Exceeded storage allocation (for current directory or dataset).

FRC_NameNotAllowed 

Requested action not taken. File name not allowed.

FRC_IntegrityReply 

Integrity protected reply.

FRC_ConfAndIntegReply 

Confidentiality and integrity protected reply.

FRC_ConfidentialityReply 

Confidentiality protected reply.

Definition at line 151 of file networkenumerations.h.

This enum is a listing of the potential security levels that can be used on an FTPS data channel.

Enumerator
FSL_Clear 

No security on the data channel. This is the default setting.

FSL_Safe 

Data will be integrity protected. Not used by TLS/SSL.

FSL_Confidential 

Data will be confidentiality protected. Not used by TLS/SSL.

FSL_Private 

Data will be both integrity and confidentiality protected.

Definition at line 211 of file networkenumerations.h.

This enum is a listing of the available file system structures to be transferred, as recognized by FTP.

I'll level with you here...even after some research I'm not sure what exactly the Record and Page values are for. I mean...I could guess, but I'd rather document my ignorance than a guess. In almost all cases (and I say "almost" strictly because once I say 100% that one case will slap me in the face) File is the only setting you'll use. This enum exists for completions sake. I cannot, and will not, be stopped.

Enumerator
FSM_File 

Configure the FTP server for file transfer. This is the default setting.

FSM_Record 

See detailed description.

FSM_Page 

See detailed description.

Definition at line 224 of file networkenumerations.h.

This enum is a listing of the available ways data can be transferred over FTP.

Enumerator
FTM_Stream 

Stream the file from the source. This is the default mode.

FTM_Block 

Send the file over in pre-sized blocks.

FTM_Compressed 

Compress the file and then stream it from the source.

Definition at line 232 of file networkenumerations.h.

This is an enum listing for protocols used and recognized by software.

Enumerator
HLP_Invalid 

Used for error conditions.

HLP_FTP 

File Transfer Protocol.

HLP_FTPS 

File Transfer Protocol Secure.

HLP_HTTP 

Hyper-Text Transfer Protocol.

HLP_HTTPS 

Hyper-Text Transfer Protocol Secure.

HLP_SMTP 

Simple Mail Transfer Protocol.

Definition at line 49 of file networkenumerations.h.

This enum is a listing of commonly supported HTTP request methods.

GET and HEAD are expected to be implemented by all HTTP servers, and generally can be used without much issue. OPTIONS is also expected to be available but is a little less often. Other requests may or may not be available. OPTIONS can be used to see what is available on a given server, or you can just make a request and see if it returns "HSC_BadRequest" or "HSC_NotImplemented".

Enumerator
HRM_Invalid 

Use for error conditions, not an actual request method.

HRM_GET 

Requests a representation of the specified resource.

HRM_HEAD 

Similar to GET, but only requests the header without the body.

HRM_POST 

Requests the server accept enclosed data as a new subordinate of the specified resource/URI. Such as a blog or forum post.

HRM_OPTIONS 

Retrieves a list of the supported HTTP methods on the server.

HRM_PUT 

Places or replaces a supplied resource at the specified URI.

HRM_DELETE 

Deletes the specified resource.

HRM_TRACE 

Requests a list of changes or additions done by other sessions.

HRM_CONNECT 

Converts the request connection to a tunnel, useful for sending traffic through a proxy.

HRM_PATCH 

Applies partial modifications to a resource.

HRM_PROPFIND 

Retrieves a property, stored as XML, from a resource. Can alternatively be overloaded to retrieve the directory hierarchy of a remote system.

HRM_PROPPATCH 

Can change and/or delete multiple properties of a resource in a single atomic act.

HRM_MKCOL 

Can be used to create a new directory. "COL" is short for Collection, which is the term commonly used for directories in this context.

HRM_COPY 

Copies a resource from one URI to another.

HRM_MOVE 

Moves a resource from one URI to another.

HRM_LOCK 

Locks a resource to prevent alterations being made to it by another session. This is similar in function to mutexes.

HRM_UNLOCK 

Unlocks a resource, freeing it for other purposes.

Definition at line 243 of file networkenumerations.h.

This enum is a listing of HTTP status codes that can be returned in response to a request.

Enumerator
HSC_Invalid 

Used for internal error conditions, not an actual status code.

HSC_Continue 

Available in HTTP 1.1. Server has received the request header and client should sent the request body.

HSC_SwitchingProtocols 

Available in HTTP 1.1. Server is acknowledging the requesters desire to switch protocols and is doing so.

HSC_Processing 

Available in WebDAV/RFC 2518. Server acknowledges the request, but it will take some time.

HSC_Ok 

Available in HTTP 1.0. Standard successful response to a request.

HSC_Created 

Available in HTTP 1.0. The request to create a resource was successful.

HSC_Accepted 

Available in HTTP 1.0. The request was successful, but will take time to process.

HSC_NonAuthoritativeInfo 

Available in HTTP 1.1. The request was successful, but the returned result may be from another source/server.

HSC_NoContent 

Available in HTTP 1.0. The request was successful, but there is no content to be returned by it.

HSC_ResetContent 

Available in HTTP 1.0. Similar to MSC_NoContent, but additionally the server is requiring the requester reset the document view.

HSC_PartialContent 

Available in RFC 7233. The request was successful, but only part of the content is being delivered due to a range header sent by the client.

HSC_MultiStatus 

Available in WebDAV/RFC 4918. A WebDAV response that means there are multiple statuses to be reported due to multiple sub-requests being sent by the client.

HSC_AlreadyReported 

Available in WebDAV/RFC 5842. A WebDAV response that means members of a DAV binding have already been reported in a previous reply (to the same request) and won't be reported again.

HSC_IMUsed 

Available in RFC 3229. The request was successful, and the response is a representation of the result of one or more instance manipulations applied to the current instance.

HSC_MultipleChoices 

Available in HTTP 1.0. Indicates multiple options for the resource that the client may follow.

HSC_MovedPermanently 

Available in HTTP 1.0. The resource has been moved and following requests should be directed to following URI.

HSC_Found 

Available in HTTP 1.0. This code is a mess. Implementations often used it similarly to HSC_SeeOther, despite the standard saying otherwise. The standard meant for this to be a temporary redirect.

HSC_SeeOther 

Available in HTTP 1.1. The response to the request can be found under another URI using the GET HTTP method.

HSC_NotModified 

Available in RFC 7232. The requested resource has not been modified since the client last downloaded a copy.

HSC_UseProxy 

Available in HTTP 1.1. The requested resource is only available through the specified proxy.

HSC_SwitchProxy 

Available in HTTP 1.0, deprecated. The request should be repeated through the provided proxy.

HSC_TemporaryRedirect 

Available in HTTP 1.1. The request should be repeated with the provided URI, but future calls may use the original URI.

HSC_PermanentRedirect 

Available in RFC 7538. The request, and all future requests, should be repeated with the provided URI.

HSC_BadRequest 

Available in HTTP 1.0. The request couldn't be fulfilled because of an error with the request that is believed to be client-side.

HSC_Unauthorized 

Available in RFC 7235. Authentication is required to access the resource. Sometimes a challenge (for authentication) will be provided along with this response.

HSC_PaymentRequired 

Available in HTTP 1.0. Mostly unused, intended to express that a micropayment is necessary to access the requested resource.

HSC_Forbidden 

Available in HTTP 1.0. The request was received but the server refuses to respond to it. Similar to HSC_Unauthorized, but authenticating will do nothing.

HSC_NotFound 

Available in HTTP 1.0. The requested resource does not exist, but may be available in the future.

HSC_MethodNotAllowed 

Available in HTTP 1.0. The request method used was made on a resource that doesn't support that method.

HSC_NotAcceptable 

Available in HTTP 1.0. The requested resource can only generate content that was specified as not acceptable according to the Accept headers specified in the request.

HSC_ProxyAuthenticationRequired 

Available in RFC 7235. The requesting client must authenticate itself with a proxy.

HSC_RequestTimeout 

Available in HTTP 1.0. The server timed out while waiting for the clients request.

HSC_Conflict 

Available in HTTP 1.0. The server detected a conflict in the clients request.

HSC_Gone 

Available in HTTP 1.0. The requested resource does not exist, and will not be available in the future.

HSC_LengthRequired 

Available in HTTP 1.0. The requested resource requires the request specify it's length, which it requires.

HSC_PreconditionFailed 

Available in RFC 7232. The server does not meet one of the preconditions specified in the request.

HSC_PayloadTooLarge 

Available in RFC 7231. The request is too large for the server to be able or willing to process.

HSC_RequestURITooLong 

Available in HTTP 1.0. The URI specified in the request was too long for the server to be able or willing to process.

HSC_UnsupportedMediaType 

Available in HTTP 1.0. The media type specified in the request is a type that the server does not support.

HSC_RequestRangeNotSatisfiable 

Available in RFC 7233. The request has asked for a portion of a resource, which the server cannot provide.

HSC_ExpectationFailed 

Available in HTTP 1.0. The server cannot meet the requirements set by the "Expect" request header.

HSC_ImATeapot 

Available in RFC 2324. A joke status code, not intended for any real-world use.

HSC_AuthenticationTimeout 

Source of definition unknown. The authentication that was used for a session has timed out, preventing the request from being processed.

HSC_MisdirectedRequest 

Available in HTTP 2.0. The request was directed at a server that is not able to produce a response.

HSC_UnprocessableEntity 

Available in WebDAV/RFC 4918. The request is well formed, but contains semantic errors preventing it from being processed.

HSC_Locked 

Available in WebDAV/RFC 4918. The requested resource is currently locked.

HSC_FailedDependency 

Available in WebDAV/RFC 4918. The request failed because of a previous request failure.

HSC_UpgradeRequired 

Available in HTTP 1.0. The server wants the client to change to the protocol specified in the response.

HSC_PreconditionRequired 

Available in RFC 6585. The server requires a request to a resource to be conditional, in order to avoid conflicts.

HSC_TooManyRequests 

Available in RFC 6585. The client has sent too many requests recently to process the current request.

HSC_RequestHeaderFieldsTooLarge 

Available in RFC 6585. The server will not process the request because one or more of the header fields are too large.

HSC_InternalServerError 

Available in HTTP 1.0. Generic error message for when something goes wrong but the cause is unknown or no suitable error code for it exists.

HSC_NotImplemented 

Available in HTTP 1.0. The request method is not supported or the server otherwise lacks the ability to process the request.

HSC_BadGateway 

Available in HTTP 1.0. The server is currently acting as a proxy or gateway, and received an invalid response from the upstream server.

HSC_ServiceUnavailable 

Available in HTTP 1.0. The server is temporarily down.

HSC_GatewayTimeout 

Available in HTTP 1.0. The server is currently acting as a proxy or gateway, and didn't receive a timely response from the upstream server.

HSC_HTTPVersionNotSupported 

Available in HTTP 1.0. The server does not support the version of HTTP used in the request.

HSC_VariantAlsoNegotiates 

Available in RFC 2295. A transparent content negotiation for the request would result in a circular reference.

HSC_InsufficientStorage 

Available in WebDAV/RFC 4918. The server does not have enough space to store the representation for the request from the client.

HSC_LoopDetected 

Available in WebDAV/RFC 5842. An infinite loop was detected while processing a request.

HSC_NotExtended 

Available in RFC 2774. Further extensions are required by this server to fulfill the request.

HSC_NetAuthenticationRequired 

Available in RFC 6585. The client needs to authenticate in order to the connected network. Intended to be used by proxies.

Definition at line 269 of file networkenumerations.h.

This is an enum listing for recognized protocols on Layer 3 of the OSI model.

Enumerator
NLP_Invalid 

Used for error conditions.

NLP_ICMP 

Internet Control Message Protocol.

NLP_ICMPv6 

Internet Control Message Protocol version 6.

NLP_IGMP 

Internet Group Management Protocol.

NLP_IPv4 

Internet Protocol version 4.

NLP_IPv6 

Internet Protocol version 6.

Definition at line 341 of file networkenumerations.h.

This is a small enum used for socket shutdown parameters.

Enumerator
SS_DontReceive 

Socket will discard any data received.

SS_DontSend 

Socket will not send any data, regardless of calls to send.

SS_DontSendOrReceive 

Both "SS_DontReceive" and "SS_DontSend".

Definition at line 352 of file networkenumerations.h.

This is an enum listing for recognized protocols on Layer 4 of the OSI model.

Enumerator
TLP_Invalid 

Used for error conditions.

TLP_SCTP 

Stream Control Transmission Protocol.

TLP_TCP 

Transmission Control Protocol.

TLP_UDP 

User Datagram Protocol.

Definition at line 360 of file networkenumerations.h.

Function Documentation

UInt16 MEZZ_LIB Mezzanine::Network::ConvertHostToNetworkByteOrder ( const UInt16  ToConvert)

Converts a UInt16 from the host byte order to network byte order.

Parameters
ToConvertThe integer to be converted.
Returns
Returns the converted integer.

Definition at line 54 of file networkutilities.cpp.

UInt32 MEZZ_LIB Mezzanine::Network::ConvertHostToNetworkByteOrder ( const UInt32  ToConvert)

Converts a UInt32 from the host byte order to network byte order.

Parameters
ToConvertThe integer to be converted.
Returns
Returns the converted integer.

Definition at line 57 of file networkutilities.cpp.

short int MEZZ_LIB Mezzanine::Network::ConvertLayer3ProtocolType ( const NetworkLayerProtocol  Protocol)

Converts from a Mezzanine address protocol type to it's internal counterpart.

Parameters
ProtocolThe Mezzanine protocol type to be converted.
Returns
Returns the converted value from the Mezzanine type to the internal type.

Definition at line 56 of file platformsocket.cpp.

NetworkLayerProtocol MEZZ_LIB Mezzanine::Network::ConvertLayer3ProtocolType ( const int  Protocol)

Converts from an internal address protocol type to it's Mezzanine counterpart.

Parameters
ProtocolThe internal protocol type to be converted.
Returns
Returns the converted value from the internal type to the Mezzanine type.
int MEZZ_LIB Mezzanine::Network::ConvertLayer4ProtocolType ( const TransportLayerProtocol  Protocol)

Converts from a Mezzanine transport protocol type to it's internal counterpart.

Parameters
ProtocolThe Mezzanine protocol type to be converted.
Returns
Returns the converted value from the Mezzanine type to the internal type.

Definition at line 76 of file platformsocket.cpp.

TransportLayerProtocol MEZZ_LIB Mezzanine::Network::ConvertLayer4ProtocolType ( const int  Protocol)

Converts from an internal transport protocol type to it's Mezzanine counterpart.

Parameters
ProtocolThe internal protocol type to be converted.
Returns
Returns the converted value from the internal type to the Mezzanine type.

Definition at line 86 of file platformsocket.cpp.

UInt16 MEZZ_LIB Mezzanine::Network::ConvertNetworkToHostByteOrder ( const UInt16  ToConvert)

Converts a UInt16 from the network byte order to host byte order.

Parameters
ToConvertThe integer to be converted.
Returns
Returns the converted integer.

Definition at line 60 of file networkutilities.cpp.

UInt32 MEZZ_LIB Mezzanine::Network::ConvertNetworkToHostByteOrder ( const UInt32  ToConvert)

Converts a UInt32 from the network byte order to host byte order.

Parameters
ToConvertThe integer to be converted.
Returns
Returns the converted integer.

Definition at line 63 of file networkutilities.cpp.

SocketDescription MEZZ_LIB Mezzanine::Network::ConvertToSocketDescription ( const sockaddr_storage &  BerkAddr)

Converts a Berkeley sockets address to a Mezzanine socket descriptor.

Parameters
BerkAddrThe Berkeley Sockets sockaddr structure to be converted.
Returns
Returns a Mezzanine socket description containing the converted socket descriptor.

Definition at line 183 of file platformsocket.cpp.

sockaddr_storage MEZZ_LIB Mezzanine::Network::ConvertToSocketStorage ( const SystemAddress MezzAddr)

Converts a Mezzanine address to a Berkeley sockets address.

Parameters
MezzAddrThe Mezzanine system address to be converted.
Returns
Returns an std::pair containing the converted socket and it's size to indicate it's type.

Definition at line 116 of file platformsocket.cpp.

sockaddr_storage MEZZ_LIB Mezzanine::Network::ConvertToSocketStorage ( const SocketDescription MezzAddr)

Converts a Mezzanine address to a Berkeley sockets address.

Parameters
MezzAddrThe Mezzanine socket descriptor to be converted.
Returns
Returns an std::pair containing the converted socket and it's size to indicate it's type.

Definition at line 138 of file platformsocket.cpp.

int MEZZ_LIB Mezzanine::Network::ConvertToSocketType ( const TransportLayerProtocol  Protocol)

Converts from a Mezzanine transport protocol type to it's internal counterpart.

Parameters
ProtocolThe Mezzanine protocol type to be converted.
Returns
Returns the converted value from the Mezzanine type to the internal type.

Definition at line 96 of file platformsocket.cpp.

TransportLayerProtocol MEZZ_LIB Mezzanine::Network::ConvertToSocketType ( const int  SockType)

Converts from an internal transport protocol type to it's Mezzanine counterpart.

Parameters
SockTypeThe internal socket type to be converted.
Returns
Returns the converted value from the internal type to the Mezzanine type.

Definition at line 106 of file platformsocket.cpp.

SystemAddress MEZZ_LIB Mezzanine::Network::ConvertToSystemAddress ( const sockaddr_storage &  BerkAddr)

Converts a Berkeley sockets address to a Mezzanine address.

Parameters
BerkAddrThe Berkeley Sockets sockaddr structure to be converted.
Returns
Returns a Mezzanine System address containing the converted socket descriptor.

Definition at line 160 of file platformsocket.cpp.

SocketResultContainer MEZZ_LIB Mezzanine::Network::ResolveDomainName ( const String DomainName,
const UInt16  Port = 0,
const NetworkLayerProtocol  NLP = Network::NLP_Invalid,
const TransportLayerProtocol  TLP = Network::TLP_Invalid 
)

Performs a DNS lookup with the provided domain name and service.

Remarks
Examples of valid service identifiers that can be passed in here can be found at: http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml
Parameters
DomainNameThe domain name to lookup, must not have a trailing slash, whitespace, or service identifier. For example "www.google.com" is valid.
PortThe port on which the domain name is operating.
NLPThe IP version to use when connecting to the target system.
TLPThe transport layer protocol the target system is using to accept connections.
Returns
Returns a SocketResultContainer containing all matching valid socket configurations.

Definition at line 140 of file networkutilities.cpp.

SocketResultContainer MEZZ_LIB Mezzanine::Network::ResolveNumericHost ( const IPAddress Address,
const UInt16  Port = 0,
const TransportLayerProtocol  TLP = Network::TLP_Invalid 
)

Performs a DNS lookup with the provided domain name and port.

Parameters
AddressThe numeric address of the target system.
PortThe port on which the domain name is accepting connections.
TLPThe transport layer protocol the target system is using to accept connections.
Returns
Returns a SocketResultContainer containing all matching valid socket configurations.

Definition at line 121 of file networkutilities.cpp.