1) ':' 문자 기준으로 Split 해서 [0]은 host, int.Parse([1])은 port

- 단순하고 빠르겟지만 뭔가 코드가 좀 원시적이라 좀 그럼


2) Regex로 파싱 ex): @"^([^:]+):(\d+)$" 후 [0].Value는 host, int.Parse([1].Value)는 port

- 좀더 명시적이긴 한데 어차피 알아서 구현해서 파싱하는거 위보다 딱히 더 나을것도 없이 복잡해지기만함


3) IPEndPoint.Parse 이용

닷넷 구버전에는 없음. ip:port는 잘 인식 하는데 localhost 등의 도메인은 인식 못함. DnsEndPoint에는 Parse함수가 없음..


4) Uri 객체 이용

https://stackoverflow.com/questions/2727609/best-way-to-create-ipendpoint-from-string

tcp://host:port 형태로 앞에 tcp://를 붙이면 Uri객체에서 파싱된 host와 port를 꺼내쓸수 있음.

:port를 명시하지 않으면 -1이 기본값으로 들어감. 당연한 얘기로 앞에 http://를 붙이면 80, https://는 443이 기본값임.

현제로썬 이게 가장 목적에 맞게 적은 코드로 갖다쓸수 있는듯함


20221014 기준 EndPoint활용겸으로 적당히 쓰는 코드

return IPEndPoint.TryParse(addr, out var ip) ? ip : dns(addr);

static DnsEndPoint dns(string addr)

{

Uri u = new("tcp://" + addr);

return new(u.Host, u.Port);

}