170 likes | 307 Views
Chapter 8 Advanced Concept. 소켓 프로그래밍. Advanced Concept. 소켓 옵션 소켓 예외 로깅. 소켓 옵션. 소켓 옵션 소켓의 작동을 제어하는 속성 높은 레벨의 소켓 추상 클래스에서는 직접 접근 불가 Socket 클래스에서 제공되는 두 개의 소켓 옵션 메서드 GetSocketOption () – 소켓 옵션의 값을 읽어옴 SetSocketOption () – 소켓 옵션의 값을 설정 소켓 옵션 메서드가 가지는 두 개의 필수 인자 SocketOptionLevel
E N D
Chapter 8Advanced Concept 소켓 프로그래밍
Advanced Concept • 소켓 옵션 • 소켓 예외 • 로깅
소켓 옵션 • 소켓 옵션 • 소켓의 작동을 제어하는 속성 • 높은 레벨의 소켓 추상 클래스에서는 직접 접근 불가 • Socket클래스에서 제공되는 두 개의 소켓 옵션 메서드 • GetSocketOption()– 소켓 옵션의 값을 읽어옴 • SetSocketOption()– 소켓 옵션의 값을 설정 • 소켓 옵션 메서드가 가지는 두 개의 필수 인자 • SocketOptionLevel • 소켓 옵션의 설정 적용 범위를 정의 • SocketOptionName • 적용할 옵션의 이름을 의미 • 예제 프로그램 : MulticastSenderOpt.cs, MulticastReceiverOpt.cs
소켓 옵션 • SocketOptionLevel
소켓옵션 • SocketOptionName
소켓 예외 • SocketException클래스 • System.Net.Sockets네임스페이스는 소켓 오류 발생 시에 throw 되는 SocketException 클래스를 제공 • 에러코드는 Winsock 에러코드에서 유래 • 에러코드를 이용하여 소켓 에러를 처리 할 수 있음
소켓 예외 • Winsock 에러 코드
소켓 예외 • Winsock 에러 코드
소켓 예외 • Winsock 에러 코드
로깅 • 프로그램이 어떠한 에러를 가지고 있을 경우에 에러를 조사하고자 하는 프로그래머에게는 최종사용자를 위해 출력된 메시지만으로는 정보가 충분하지 않음 • 로깅 • 사용자가 프로그램을 사용하는 동안 디버깅에 관한 추가 정보는 따로 로그파일에 저장 • 로깅 구현의 어려움 • 소켓 프로그램과 파일 로깅에 영향을 줄 수 있는 수많은 요소들을 고려해야 하기 때문 • 해결 - NLog • 쉽고 간단하게 사용할 수 있는 로깅 라이브러리
로깅 • NLog • .NET을 위해 만들어진 오픈 소스 로깅 API • 콘솔 로깅과 파일 로깅 기능을 프로그램에 추가할 수 있음 • http://www.nlog-project.org/에서 무료로 다운로드 가능 • NLog의 사용 • NLog인스톨 후, 로깅API를 사용하기 위해 솔루션 탐색기에서 Add Reference (참조 추가)를해주어야 함 • .NET 탭에서 NLog라이브러리를 찾아서 추가 • .NET 탬에서NLog라이브러리가 보이지 않을 경우, Browse(찾아보기)를 통해 직접 NLog.dll파일을 찾아서 추가
로깅 • 참조 추가 (Add Reference)
로깅 • 프로그램 내에 NLog로깅 기능을 구현하기 위한 설정파일 정의 • 우선 솔루션 탐색기에서 프로젝트에 새로운 항목을 추가하여 텍스트파일을 생성 • 아래와 같은 XML 문법을 사용하여 설정파일을 작성 • 작성한 설정 파일은 파일속성을 통해 Copy to Output Directory (출력 디렉터리로 복사) 항목을 Copy always (항상 복사)로 설정 <?xmlversion="1.0" encoding="utf-8" ?> <nlogxmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <targets> <targetname="file" xsi:type="File" fileName="log.txt" /> </targets> <rules> <loggername="*" minlevel="Debug" writeTo="file" /> </rules> </nlog>
로깅 • 설정파일 속성 변경
로깅 • 프로젝트에 설정파일 추가가 완료되면 소스코드에서 로거를 사용할 수 있음 • 프로그램의 소스코드 내에서 로거 초기화
로깅 • Logger객체를 생성한 후로는 로거에 메시지를 추가할 수 있음 • 로그 엔트리를 추가할 때에는 로그레벨을 선택하여 추가할 수 있음 • 로그레벨 • 메시지의 의도나 심각성을 나타내기 위해 사용 • 나중에 프로그램의 실행흐름을 검토할 때에 메시지를 분류하기 위한 효과적인 방법이기도 함 • 로그레벨은 설정파일의 설정을 통해서 각각 다르게 처리할 수 있음 • 예제 프로그램 : POP3ClientLog.cs
로깅 • NLog로그 레벨