DLL 이 외부로 공개할 수 있는 것은 클래스, 구조체, 열거형, 인터페이스 같은 타입인데 주로 클래스를 공개한다.
DLL 을 만들기 위한 절차
1. 비주얼 스튜디오 실행시킨 후 파일 - 새로 만들기 - 프로젝트를 실행한다.
클래스 라이브러리를 선택하고 파일 이름을 Link2Me 로 생성했다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Link2Me
{
public class Class1
{
}
}
로 기본 파일이 생성된다.
2. 만들고자 하는 코드를 작성한다.
using System;
using System.IO;
using System.Net;
namespace Link2Me
{
public class Logic
{
/// <summary>
/// 문자열 원본에서 오른쪽에서 부터 추출한 갯수만큼 문자열을 가져옵니다.
/// </summary>
/// <param name="Text">문자열 원본</param>
/// <param name="nLength">추출할 갯수</param>
/// <returns>추출된 문자열</returns>
public string RIGHT(string Text, int nLength)
{
string ConvertText = string.Empty;
if (Text.Length < nLength)
{
nLength = Text.Length;
}
ConvertText = Text.Substring(Text.Length - nLength, nLength);
return ConvertText;
}
/// 문자열 원본에서 왼쪽에서 부터 추출한 갯수만큼 문자열을 가져옵니다.
/// </summary>
/// <param name="Text">문자열 원본</param>
/// <param name="nLength">추출할 갯수</param>
/// <returns>추출된 문자열</returns>
public string LEFT(string Text, int nLength)
{
string ConvertText = string.Empty;
if (Text.Length < nLength)
{
nLength = Text.Length;
}
ConvertText = Text.Substring(0, nLength);
return ConvertText;
}
/// <summary>
/// 문자열 원본의 지정한 위치에서 부터 추출할 갯수 만큼 문자열을 가져옵니다.
/// </summary>
/// <param name="Text">문자열 원본</param>
/// <param name="nStart">추출을 시작할 위치, 0부터 시작</param>
/// <param name="nLength">추출된 문자열</param>
/// <returns>추출된 문자열</returns>
public string Mid(string Text, int nStart, int nLength)
{
string ConvertText;
if (nStart < Text.Length)
{
if ((nStart + nLength) <= Text.Length)
{
ConvertText = Text.Substring(nStart, nLength);
}
else
{
ConvertText = Text.Substring(nStart);
}
return ConvertText;
}
else
{
Text = string.Empty; // 시작점이 길이보다 길면 반환할 것이 없음
return Text;
}
}
/// <summary>
/// 문자열이 숫자인지 검사하여 숫자이면 true 를 반환
/// </summary>
public bool isNumeric(string str)
{
double Num;
bool isNum = double.TryParse(str, out Num);
if (isNum)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 원하는 문자열을 잘라내는 함수입니다
/// </summary>
/// <param name="_body">원본 문자열</param>
/// <param name="_parseString">Split할 구분자</param>
/// <param name="index">Split으로 잘라진 배열의 숫자</param>
public static string SSplit(string _body, string _parseString, int index)
{
// 엑셀 VBA 에서 사용하는 Split 함수
string varTemp = _body.Split(new string[] { _parseString }, StringSplitOptions.None)[index];
return varTemp;
}
/// <summary>
/// 문자열에 한글이 포함되어 있는지 검사하여 포함되어 있으면 true 반환
/// </summary>
public bool isContainHangul(string s)
{
char[] charArr = s.ToCharArray();
foreach (char c in charArr)
{
if (char.GetUnicodeCategory(c) == System.Globalization.UnicodeCategory.OtherLetter)
{
return true;
}
}
return false;
}
/// <summary>
/// Public IP 주소를 문자열로 반환
/// </summary>
public static string GetRealIP()
{
string url = "http://www.findip.kr/";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
string resResult = string.Empty;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
StreamReader readerPost = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8, true);
resResult = readerPost.ReadToEnd();
}
if (resResult.IndexOf("내 아이피 주소(My IP Address) :") > 0)
{
int ingNO = resResult.IndexOf("내 아이피 주소(My IP Address) :");
string varTemp = resResult.Substring(ingNO, 50);
string realip = SSplit(SSplit(varTemp, "내 아이피 주소(My IP Address) :", 1), "</h1>", 0).Trim();
return realip;
}
return null;
}
}
}
3. 순수한 응용 프로그램 코드만 만드는 것이므로 Release 모드로 실행한다.
4. DLL 을 프로젝트 파일에 참조시키기
5. DLL 실행시키기
MessageBox.Show(Link2Me.Logic.GetRealIP());
로 테스트를 해봤다.
정상적으로 IP 정보를 잘 보여준다.
using Link2Me;
를 선언해서 사용해도 된다.
'C# > 기능 활용' 카테고리의 다른 글
C# MP3 파일 헤더정보 추출하는 함수 (0) | 2015.12.02 |
---|---|
C# 자식폼 종료아이콘 클릭시 다른 이벤트 실행되게 하기 (0) | 2015.11.30 |
C# 프로그램 사용기한 체크 (0) | 2015.10.23 |
C# Get Mac Address (0) | 2015.10.12 |
C# Get IP Address (사설 IP, 공인 IP) (0) | 2015.10.11 |