我有一个IP地址为
的字符串clientId = "172.19.200.29:10308"
我需要从中生成IPAddress对象。请阅读以下内容
IPAddress clientIpAddr;
if (IPAddress.TryParse(clientId, out clientIpAddr)) //<-returns false
//clientIpAddr is null
可能出现什么问题
答案 0 :(得分:6)
它不是IP地址,而是IP地址和端口
试
if (IPAddress.TryParse(clientId.Split(':')[0], out clientIpAddr))
如果您需要IPv6支持
var arr = clientId.Split(':');
clientId = arr.Length <= 2 ? arr[0] : string.Join(":", arr.Take(8).ToArray());
if (IPAddress.TryParse(clientId, out clientIpAddr))
答案 1 :(得分:3)
IPAddress class 应仅包含IP (不包含端口)。 您可能会对IPEndPoint class感到困惑,{{3}}包含IP和端口:
将IPAddress对象实例化如下:
string clientId = "172.19.200.29:10308";
IPAddress clientIpAddr;
var success = IPAddress.TryParse(clientId.Split(':')[0], out clientIpAddr);
如果需要,您可以将IPEndPoint实例化如下:
// Assuming that both ip and port are valid.
int port = int.Parse(clientId.Split(':')[1]);
var endpoint = new IPEndPoint(clientIpAddr, port);