{"record":{"id":"2b94ea1067c570fb","repo":"BornToBeRoot/NETworkManager","slug":"could-not-parse-server-connection-info-from-input-input","errorCode":null,"errorMessage":"Could not parse server connection info from input: {input}","messagePattern":"Could not parse server connection info from input: (.+?)","errorType":"validation","errorClass":"FormatException","httpStatus":null,"severity":"error","filePath":"Source/NETworkManager.Models/Network/ServerConnectionInfo.cs","lineNumber":165,"sourceCode":"        }\n\n        return false;\n    }\n\n    /// <summary>\n    ///     Parses a server connection string into a <see cref=\"ServerConnectionInfo\" /> object.\n    ///     Supports formats: IPv4, IPv4:port, IPv6, [IPv6], [IPv6]:port, hostname, hostname:port\n    /// </summary>\n    /// <param name=\"input\">Server connection string to parse.</param>\n    /// <param name=\"defaultPort\">Default port to use if not specified in input.</param>\n    /// <returns>Parsed <see cref=\"ServerConnectionInfo\" /> object.</returns>\n    /// <exception cref=\"FormatException\">Thrown when the input string is not in a valid format.</exception>\n    public static ServerConnectionInfo Parse(string input, int defaultPort, TransportProtocol transportProtocol)\n    {\n        if (TryParse(input, out var serverConnectionInfo, defaultPort, transportProtocol))\n            return serverConnectionInfo;\n\n        throw new FormatException($\"Could not parse server connection info from input: {input}\");\n    }\n\n    /// <summary>\n    ///     Returns a string that represents the current object. IPv6 addresses are bracketed\n    ///     (<c>[::1]:53</c>) so the address and port remain distinguishable.\n    /// </summary>\n    /// <returns>Server:Port, or [Server]:Port for an IPv6 address.</returns>\n    public override string ToString()\n    {\n        return IPAddress.TryParse(Server, out var ip) && ip.AddressFamily == AddressFamily.InterNetworkV6\n            ? $\"[{Server}]:{Port}\"\n            : $\"{Server}:{Port}\";\n    }\n}","sourceCodeStart":147,"sourceCodeEnd":179,"githubUrl":"https://github.com/BornToBeRoot/NETworkManager/blob/2780d65469917a296dbc15f206107d72e2d0115c/Source/NETworkManager.Models/Network/ServerConnectionInfo.cs#L147-L179","documentation":"Parse validated the input against all supported server-connection formats (IPv4, IPv4:port, IPv6, [IPv6]:port, hostname, hostname:port) and none matched, so it aborts by throwing FormatException instead of returning a partially valid ServerConnectionInfo. It fires on malformed user-supplied connection strings such as empty text, 'host:port' with a non-numeric or out-of-range port, or unbracketed IPv6 with a port.","triggerScenarios":"Thrown at Source/NETworkManager.Models/Network/ServerConnectionInfo.cs:165 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the input string for typos before passing it to Parse (e.g. 'host:port' with a valid port number).","Wrap IPv6 addresses in square brackets when a port is specified, e.g. '[::1]:3389'.","Ensure the port, if given, is numeric and within 1-65535.","Pre-validate the string with a regex or Uri.TryCreate-style check, or call a TryParse variant if available, before calling Parse."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2780d65469917a296dbc15f206107d72e2d0115c","analyzedAt":"2026-09-12T17:00:17.986Z","contentChangedAt":"2026-09-12T17:00:17.986Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}