클라이언트 IP를 일정 범위 내의 IP안에 있는지 확인하는 함수이다.
string ip_network = "192.168.0.1:192.168.0.55,10.2.10.11:10.2.10.15";
bool b = checkIpNetwork(ip_network);
private bool checkIpNetwork(string ip_network)
{
if (ip_network == "")
return true;
string[] ipArray = ip_network.Split(',');
foreach (string strIP in ipArray)
{
IPAddress startIP = null;
IPAddress endIP = null;
IPAddress loginIP = null;
string[] ips = strIP.Split(':');
if (ips.Length < 2 || ips == null) continue;
if (!IPAddress.TryParse(ips[0], out startIP)) continue;
if (!IPAddress.TryParse(ips[1], out endIP)) continue;
if (!IPAddress.TryParse(myip, out loginIP)) continue;
if (startIP.AddressFamily != endIP.AddressFamily) continue;
if (startIP.AddressFamily != loginIP.AddressFamily || endIP.AddressFamily != loginIP.AddressFamily) continue;
long ipStart = BitConverterFromIPAddrss(startIP);
long ipEnd = BitConverterFromIPAddrss(endIP);
long ip = BitConverterFromIPAddrss(loginIP);
if ( ip >= ipStart && ip <= ipEnd)
return true;
}
return false;
}
private long BitConverterFromIPAddrss(IPAddress address)
{
var addressBytes = address.GetAddressBytes();
Array.Reverse(addressBytes);
var paddedAddressBytes = new byte[addressBytes.Length + 1];
Array.Copy(addressBytes, paddedAddressBytes, addressBytes.Length);
return BitConverter.ToInt32(paddedAddressBytes, 0);
}
문자열 구성에 따라 파싱하는 부분은 수정이 필요하기도 하다.
'프로그래밍 > C#' 카테고리의 다른 글
C# 파일명 유효성 체크 (0) | 2018.02.26 |
---|---|
C# 파일 경로 유효성 체크 (0) | 2018.02.26 |
C# 싱글톤 패턴 예제 모음 (2) | 2018.02.21 |
C# DataGridView 에서 선택된 DataRow 꺼내기 (0) | 2018.01.11 |
C# WebBrowser 키이벤트 엔터키 막기 (0) | 2017.09.26 |
DataTable에서 Group By Sum 하기 (0) | 2015.01.19 |
C# DataTable에서 특정 컬럼만 Select해서 DataTable 만들기 (0) | 2015.01.18 |
C# 1년전 같은주차 같은요일 날짜 구하기 (0) | 2014.10.23 |