IPAddress中的端口我得到一个代表IP地址的字符串。它具有格式ip:port我需要生成IP地址。将使用:publicstaticIPAddressParse(stringipString)我需要获取的IPAddress不应包含有关端口的数据。解析支持吗?如果不是,那怎么可能呢?然后你需要绝对知道你是否总是得到一个端口和你的IP。如果你总是得到一个端口,那么你总是可以使用Jon的代码并删除最后一个冒号之后的部分。然后,您可以将ipString传递给IPAddress.TryParse函数以获取IPAddress对象。如果ipString由于任何原因格式错误,IPAddress.Parse函数将为您提供异常。现在为什么你必须充分意识到字符串中端口的存在。让我举个例子:::213-绝对有效的IPV6地址。但它有两种不同的含义:如果您已经知道必须有一个端口,则它会转换为0:0:0:0:0:0:0:0:213。但如果你不知道那么它也意味着0:0:0:0:0:0:0:213。请注意,与上面的段相比,只有一个段。有效的IPV6总是有8个段,我举的例子是IPV6地址的简写。假设您不知道是否要在字符串中获取端口。那么您必须始终假设IPV6地址是长符号。在这种情况下,您可以检查是否存在冒号计数(这仅适用于IPV6):(非常粗略的示例)intcolonCount=ipV6String.Count(c=>c==':');int点计数=ipV6String。数(c=>c=='.');if(((colonCount==7)&&(dotCount==3))||((colonCount==8)&&(dotCount==0))){//端口存在于字符串中//使用LastIndexOf提取端口}else{//PortNOTpresent}要使其适用于IPV4,只需检查3个点和1个冒号ValidIPAddresses一些示例(没有端口信息)IPV4xxxxIPV6x:x:x:x:x:x:x:xx:x:x:x:x:x:dddd::(简写表示所有段均为0)x:x::(表示最后六个段为0)::x:x(表示前六个segmentsare0s)x:x::x:x(表示中间四段为0s)有关IPAddress格式的信息,请查看以下链接:http://publib.boulder.ibm.com/infocenter/dsihelp/ds8000ic/index.jsp?topic=%2Fcom.ibm.storage.ssic.help.doc%2Ff2c_internetprotocol_3st92x.htmlhttp://publib.boulder.ibm.com/infocenter/ts3500tl/v1r0/index.jsp?topic=%2Fcom。ibm.storage.ts3500.doc%2Fopg_3584_IPv4_IPv6_addresses.html假设总是有一个端口,它总是由:表示,你可以无条件地删除最后一个冒号之后的部分:intportStart=ipString.LastIndexOf(':');ipString=ipString.Substring(0,portStart);我希望这也适用于IPv6,除非您的IPv6“地址和端口”格式不使用冒号-这与RFC5952一样有效基本上要做到这一点,您需要了解更多关于您将接收的格式。以上就是C#学习教程:IPAddress中端口共享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
