c# 53

첫 번째 응용, Form 배경색 Toggle [WinForm with C#]

안녕하세요. 언제나 휴일에 언휴예요.첫 번째 응용, Form 배경색 Toggle [WinForm with C#]Windows Forms 프로그래밍 실습 강의 “WinForm with C#”을 시작할게요.첫 번째 실습은 Form 배경색을 Toggle하는 응용입니다.1. Windows Forms 응용 만들기2. Form 속성 설정하기 Form의 Text 속성3. Form 이벤트 핸들러 만들기 Form의 Load 이벤트 핸들러 Form의 MouseClick 이벤트 핸들러4. 소스 코드 구현 이벤트 핸들러 구현 배경 색 Toggle 변경 메서드 구현1. Windows Forms 응용 만들기첫 번째 실습이죠. Visual Studio를 실행한 이후에 만드는 과정을 소개할게요.이 강의에서 사용할 ..

[C#] 3. Console 입출력 개요 - 3.1 서식 지정 문자열, 3.2 수식 포멧 문자열, 3.3 정수 및 실수의 자릿수 지정

3. Console 입출력 개요 프로그래밍 언어를 배울 때 출력문은 제일 먼저 만나죠. 이 책에서도 첫 번째 프로그램인 "Hello, World"에서 Console.WriteLine("Hello, World!"); 를 사용했어요. Console.WriteLine("Hello, World!"); 이번 장에서는 Console 클래스를 이용하여 출력하는 방법과 일력받는 부분에 관하여 알아볼게요. 3.1 서식 지정 문자열 Console.WriteLine 메서드에 다양한 인자를 원하는 형태로 출력하려면 첫 번째 입력 인자로 서식 지정 문자열을 전달해야 합니다. 수나 날짜, 열거형 등을 원하는 형태로 출력할 때 효과적이죠. 서식 지정 문자열은 인덱스, 배치, 포멧 문자열로 구성합니다. {index [,alignme..

C#/디딤돌 C# 2024.01.22

[C#] 2. 기본 형식 I - 메모리 크기 확인, 논리 형식 bool, 문자 형식 char

다루는 내용 2.1 메모리 크기 2.2 논리 형식 bool 2.3 문자 형식 char 2. 기본 형식 C#에서는 관리할 데이터를 표현하기 위해 형식과 변수를 제공합니다. 형식은 표현할 데이터 종류를 약속한 것입니다. 이러한 형식은 변수 선언이나 개체 생성을 통해 구체화합니다. 변수는 구체화 한 데이터에 접근하기 위해 사용하는 것입니다. C#에서 형식은 이미 제공하는 기본 형식과 개발자가 정의해서 사용하는 사용자 정의 형식이 있습니다. 다음은 System namespace에 정의한 기본 형식입니다. C# 형식에는 기본 형식과 사용자 형식이 있다고 하였습니다. 이 중에 사용자 형식에는 클래스, 구조체와 열거형이 있어요. 이들에 대해서는 뒤에서 다시 자세하게 다룰게요. 형식은 분류 방법에 따라 값 형식, 참조..

C#/디딤돌 C# 2024.01.19

1. C# 소개

1. C# 소개 안녕하세요. 언제나 휴일입니다. 컴퓨터 혹은 스마트 기기 등에서 동작하는 프로그램을 만들 때 사용하는 언어는 매우 다양합니다. 그 중에서 .NET Framework에서 동작하는 프로그램을 만들 때 가장 추천하는 언어는 C#입니다. .NET Framework는 마이크로소프트 사에서 개발한 윈도우즈 프로그램 개발 및 실행 환경입니다. 개인용 컴퓨터 뿐만 아니라 다양한 스마트 기기에 설치하여 사용할 수 있습니다. 당연히 C# 언어를 이용하면 개인용 컴퓨터를 비롯하여 다양한 기기에서 동작 가능한 프로그램을 개발할 수 있습니다. (물론 우리나라에서 .NET Framework는 거의 Windows O/S를 탑재한 컴퓨터 환경입니다.) .NET Froawork 에는 공통으로 제공하는 라이브러리를 포함..

C#/디딤돌 C# 2024.01.18

[C#] 미디 분석 프로그램 만들기– 5. 미디분석기 5.3 Final, 트리 뷰 상세 구현

1. 유튜브 동영상 강의 미디 분석 프로그램 - 미디 분석기, 트리 뷰 2. 해야 할 일 드디어 미디 분석 프로그램 마지막 강의입니다. 이번 강의에서는 TreeView에 청크의 내용을 상세하게 보여주는 부분과 노드를 선택하였을 때 대응하는 바이너리를 DataGridView에서 확인하기 쉽게 선택해서 보여주는 부분을 구현합니다. 3. MakeChunkNode 메서드 수정 미디 분석기 프로그램 MainForm.cs에서 MakeChunkNode 메서드를 수정합시다. chunk가 헤더인지 트랙인지에 따라 상세 노드를 만들어 매다는 메서드를 만들어 호출합시다. private TreeNode MakeChunkNode(Chunk chunk) { TreeNode tn = new TreeNode(chunk.ToStrin..

[C#] 미디 분석 프로그램 만들기– 5. 미디분석기 5.2 크로스 스레드 문제 해결 및 Hexa 값 보기

1. 유튜브 동영상 강의 미디 분석 프로그램 - 미디 분석기 2. 해야 할 일 이번 강의에서는 지난 강의에서 청크 목록을 ListBox에 추가할 때 발생하는 크로스스레드 문제를 해결할 거예요. 그리고 ListBox에 청크를 선택하면 청크의 원본 이진 데이터를 Hexa 값으로 DataGridView에 보여주는 작업을 할 거예요. 이 외에도 Header 클래스에 Division에 관한 코드를 수정합니다. 3. 크로스 스레드 문제 해결 크로스 스레드 문제는 폼이나 컨트롤을 생성한 스레드가 아닌 스레드에서 폼이나 컨트롤의 속성을 변경하는 등의 작업을 할 때 발생합니다. 이에 관한 자세한 사항은 크로스 스레드 발생 원인 및 해결하기를 참고하세요. 폼이나 컨트롤에는 InvokeRequired 속성을 갖고 있습니다...

[C#] 미디 분석 프로그램 만들기 – 5. 미디분석기 5.1 화면 배치 및 미디 파일 열기

1. 유튜브 동영상 강의 미디 분석 프로그램 - 미디 분석기 2. 해야 할 일 이전강의까지 미디 파일을 분석하는 ehmidilib를 만들었습니다. (*진행하면서 ehmidilib에 새로운 형식 및 기능을 추가합니다. *) 이번 강의부터 ehmidilib를 이용하는 미디분석기 프로그램을 작성하기로 합시다. 미디분석기 프로그램은 Windows Forms 앱(.NET Framework) 입니다. 이번 강의에서는 메인 폼에 컨트롤을 배치하고 미디 파일을 열어서 청크 목록을 보여주는 부분까지 구현할거예요. 미디 파일을 여는 작업을 위해 “파일 열기 대화상자”인 OpenFileDialog를 사용합니다. 미디 파일에 청크 목록을 분석하는 작업은 ehmidilib에 MidiParser 클래스를 추가하여 구현할 거예요...

[C#] 미디 분석 프로그램 만들기 – 4. 트랙 청크 4.6 System Event

1. 유튜브 동영상 강의 미디 분석 프로그램 - 트랙 청크 분석, System Event 2. System Event Message 현재 미디 파일에 헤드 청크와 트랙 청크를 분석하는 작업을 진행하고 있습니다. 현재 헤드 청크는 상세 분석하였고 트랙 청크도 메타 이벤트와 미디 이벤트는 분석하는 기능까지 구현했어요. 이번 강의에서는 시스템 이벤트를 분석하는 작업을 진행할게요. 앞에서 얘기했듯이 상태 바이트가 0xF0~FE까지가 시스템 이벤트입니다. 다음은 상태 바이트에 따른 시스템 이벤트에 관한 설명입니다. 0xF0 … 0xF7 ☞ System Exclusive Messages 상태 바이트 뒤에 제조사 ID가 오며 그 뒤에 오는 메시지는 가변적이며 맨 뒤에 0xF7이 옵니다. 0xF1 DD ☞ MTC Qu..

[C#] 미디 분석 프로그램 만들기 – 4. 트랙 청크 4.5 Midi Event 상세 구현

1. 유튜브 동영상 강의 미디 분석 프로그램 - 트랙 청크, 미디 이벤트 상세 분석 지난 강의에서 미디 이벤트를 분석하는 부분을 구현하였습니다. 이번 강의에서는 미디 이벤트의 상세 내용을 분석하기로 할게요. 2. 미디 이벤트 지난 강의에서 설명한 미디 이벤트 중에 이번에 상세 구현할 부분만 다시 설명하기로 할게요. Note off, Note on, Key after touch에서 F는 음 번호, S는 음 세기입니다. 음 번호를 12로 나누었을 때 몫은 옥타브이며 나머지는 음 이름입니다. Control Change에서 F는 컨트롤 번호이고 S는 새로운 값입니다. 컨트롤 번호에 대응하는 이름은 이전 글(MIDI 파일 MIDI 이벤트의 Control 데이터와 악기 이름)에 있어요. Program Change에..

[C#] 미디 분석 프로그램 만들기– 4. 트랙 청크 분석 4.4 Midi Event

1. 유튜브 동영상 강의 미디 분석 프로그램 - 트랙 청크 분석, 미디 이벤트 2. 미디 이벤트 앞에서 우리는 미디 파일은 청크들의 집합이라는 것과 청크에는 Header 청크와 Track 청크가 있다는 것을 확인하였습니다. 그리고 Track 청크에는 이벤트 정보들이 있고 이벤트 정보에는 메타 이벤트, 미디 이벤트, 시스템 이벤트가 있다는 것도 소개하였습니다. 바로 이전 강의에서는 메타 이벤트를 분석하는 코드를 작성했었죠. 이번에는 미디 이벤트를 분석하는 코드를 작성하기로 할게요. Track 청크는 이벤트들로 구성한다고 앞에서 얘기를 했고 이벤트는 delta time이 오고 그 뒤에 오는 상태 정보가 0~0xEF까지는 미디 이벤트, 0xF0~0xFE까지는 시스템 이벤트, 0xFF는 메타 이벤트라고 하였습니..

[C#] 미디 분석 프로그램 만들기– 4. 트랙 청크 분석(MTrk) 4.3 Meta Event 상세 구현(키, 박자 정보 등)

1. 유튜브 동영상 강의 미디 분석 프로그램 - 트랙 청크 분석, Meta Event 2. 해야 할 일 이전 글에서 미디 파일의 Track 청크의 메타 데이터에 관해 다루고 이를 분석하는 소스 코드를 소개하였습니다. 그런데 메타 데이터의 내용을 무조건 문자열로 구성하고 있다는 가정으로 정보를 제공하였습니다. 하지만 메타 데이터 내용은 약속된 수치로 특별한 의미를 나타내는 것도 있어요. 대표적으로 박자와 키 정보 등을 들 수가 있어요. 이번에는 메타 데이터의 내용을 상세하게 분석하여 제공하는 기능을 구현하기로 할게요. 3. MetaEvent 클래스 추가 구현 ehmidi 라이브러리의 MetaEvent 클래스에 상세 정보를 제공하는 MetaDescription 속성을 추가합시다. 템포나 박자 등을 계산하는 ..

[C#] 미디 분석 프로그램 만들기 – 4. 트랙 청크 분석(MTrk) 4.2 Meta Event

1. 유튜브 동영상 강의 미디분석 프로그램 만들기 - 트랙 청크 분석, 미디이벤트 2. Meta Event 이전 강의에서 미디 파일에서 Track 청크의 기본 구조와 delta time을 구하는 것에 관하여 다루었어요. 이번에는 Track 청크의 Meta 이벤트에 관하여 알아보고 분석하는 소스 코드를 소개할게요. Track 청크의 이벤트는 delta time과 이벤트 정보로 이루어져 있다는 것을 이전 게시글에서 얘기했어요. 또한 이벤트 정보는 Meta 이벤트, System 이벤트, Midi 이벤트 중에 하나라는 것도 소개했었죠. 이벤트 정보가 Meta 이벤트, System 이벤트, Midi 이벤트 중에 어떤 것인지를 확인하려면 delta time 뒤에 오는 첫 번째 바이트 정보의 값을 확인하여야 합니다...

[C#] 미디 분석 프로그램 만들기– 4. 트랙 청크 분석(MTrk) 4.1 delta time 구하기

1. 유튜브 동영상 강의 미디 분석 프로그램 만들기 - 트랙 청크, deltatime 2. 트랙 청크의 구조와 delta time 앞에서 미디 파일은 청크의 집합이라는 것과 청크에는 헤더 청크와 트랙 청크가 있다는 것을 확인하였습니다. 또한 헤더 청크의 내용을 분석하는 것까지 살펴보았습니다. 이번에는 트랙 청크를 분석하는 것을 할 거예요. 그리고 제일 먼저 delta time을 구하는 코드를 구현해 볼 거예요. 트랙 청크는 청크 데이터 부분에 트랙 이벤트 정보들로 구성합니다. 트랙 이벤트 정보는 해당 이벤트가 미디가 시작하여 어느 시점에 발생할 이벤트인지를 결정하는 delta time 부분이 먼저 오며 이후에 이벤트 정보가 옵니다. 이벤트 정보는 메타 이벤트, 시스템 이벤트, 미디 이벤트로 구분할 수 있..

[C#] 미디 분석 프로그램 만들기– 3. Head 청크, MThd

1. 유튜브 동영상 강의 미디 분석 프로그램 만들기 - 헤더 청크 분석 2. 해야 할 일과 이론 이전 글에서 미디 파일은 청크들의 집합이라는 얘기와 함께 이를 확인하는 C# 소스 코드를 소개하였습니다. 이번에는 미디 파일의 청크 중에 Head 청크의 구조를 알아보고 이를 분석하는 C# 소스 코드를 소개할게요. 미디 파일의 head 청크는 14 바이트로 구성합니다. 청크 타입부분의 값은 ASCII 코드에서 Mthd에 해당하는 값(16진수로 4D 54 68 64)이 옵니다. 헤드 청크의 길이는 6바이트입니다. Head 청크의 데이터는 포멧, 트랙 개수, division으로 구성합니다. 포멧은 2바이트 차지하며 0,1,2 중에 하나입니다. 0: 단일 트랙, 1: 다중 트랙(여러 악기를 표현하기 쉬움), 2: ..

[C#] 미디 분석 프로그램 만들기– 2. 청크 목록 분석

1. 유튜브 동영상 강의 미디분석 프로 그램 만들기 - 청크 목록 분석 2. 해야 할 일 이번에는 미디 파일 구조를 간단히 알아보고 이를 분석하는 간단한 응용 프로그램을 작성해 보기로 할게요. 먼저 미디(Midi)는 Musical Instrument Digital interface로 전자악기의 디지털 데이터를 주고 받기 위한 표준 규격입니다. 여기에서는 미디 파일 구조를 점진적으로 분석하고 이를 이용하는 프로그램을 단계적으로 작성해 나가기로 할게요. 미디 파일은 덩어리(청크, Chunk)들의 집합입니다. 미디 파일은 여러 개의 청크들로 구성하고 있다는 거예요. 그리고 청크는 청크 유형(4바이트), 청크 길이(4바이트), 청크 데이터(청크 길이)의 조합이예요. 3. StaticFuns 정적 클래스 정의 S..

4. WaferLine 예광탄 – 4.2 WaferLine 클래스 정의 [Wafer 코팅 시뮬레이션]

1. 유튜브 동영상 강의 Wafer 코팅 시뮬레이션 - WaferLine 예광탄 WaferLine 소스 코드 using System; using System.Collections; using System.Collections.Generic; using WaferLineLib; namespace WaferLineLib { public class WaferLine : IEnumerable { public int No { get; } public int Spin { get; set; } public int Drop { get; set; } public WaferLine(int no) { No = no; Spin = 1000; Drop = 20; } List bwafers = new List(); List aw..

4. WaferLine 예광탄 – 4.1 시연 및 Layout [Wafer 코팅 시뮬레이션]

1. 유튜브 동영상 강의 WAFER 코팅 시뮬레이션 예광탄 2. WaferLine 예광탄 시연 WaferLine은 Wafer 추가, 코팅액 추가, 회전 속도 설정, 낙하 속도 설정, 코팅 시작 및 코팅한 Wafer를 확인하는 기능을 제공합니다. 여기에서는 WaferLine에 코팅해야 할 Wafer는 최대 200개를 보관할 수 있게 하드코딩할게요. 코팅액은 최대 20병을 보관할 수 있게 하드코딩합니다. 코팅액 1 병은 1000개의 쉘을 코팅할 수 있습니다. 코팅 완료한 Wafer는 보관에 제한이 없습니다. 3. WaferLine 예광탄 Layout WaferLine 예광탄의 자식 컨트롤을 배치합시다. Wafer(tbar_wafer)와 코팅액(tbar_pr), 회전속도(tbar_spin) 및 낙하속도(tba..

[C#] 미디 분석 프로그램 만들기 – 1. 프로젝트 소개

1. 유튜브 동영상 강의 미디 분석 프로그램 유튜브 동영상 강의 2. 프로그램 소개 미디 파일은 여러 개의 청크들로 구성합니다. 청크는 청크 타입과 청크 길이와 데이타로 구성하고 있는데 헤더 청크와 트랙 청크가 있어요. 이 외에 자세한 사항은 프로젝트를 진행하면서 하나 하나 설명하기로 할게요. 프로젝트 제작 순서는 다음과 같습니다. 청크 분석 헤더 청크 분석 트랙 청크 분석 메타 이벤트 분석 미디 이벤트 분석 시스템 이벤트 분석 미디 분석 프로그램 미디 분석 프로그램은 C# 언어와 Windows Forms 기술을 사용하여 구현합니다. 프로젝트를 진행하면서 미디 파일의 구조와 의미를 설명하기로 할게요. 그럼 다음 강의에서 만나요.

1. 소개 [경로찾기 프로젝트 – C#, 카카오 지도 API, SK TMAP API 활용 ]

안녕하세요. 언제나 휴일입니다. C# 언어로 카카오 개발자 센터의 지도 및 지역 API, SK TMAP API를 이용하여 경로 찾기 프로젝트를 만드는 과정을 다룹니다. 제작에 앞서 작성할 프로그램의 기능을 소개하려고 합니다. 경로 찾기 프로젝트 소개 작성할 프로그램 소개 작성할 프로그램은 C#, Windows Forms 앱[.NET Framework]입니다. 먼저 출발지 경로를 입력하여 경로 탐색 결과 중에 하나의 항목을 선택합니다. (카카오 개발자 센터 지역 검색 API 사용) 그리고 목적지도 입력하여 경로 탐색 결과 중에 하나의 항목을 선택합니다. (카카오 개발자 센터 지역 검색 API 사용) 경로 찾기 버튼을 클릭하면 출발지에서 목적지까지의 경로를 탐색합니다. (SK TMAP API 이용) 탐색한 ..

OpenAPI/C# OpenAPI 2024.01.09

3. 지역 검색 및 위치 확인 [경로찾기 프로젝트 – C#, 카카오 지도 API, SK TMAP API 활용 ]

안녕하세요. 언제나휴일입니다. 1. 유튜브 동영상 강의 2. 프로젝트 소개 및 요구 기술 이번에는 지역 검색 및 위치 확인 앱 개발입니다. 지역 검색한 후에 검색 결과를 선택하면 지도에 Center를 이동시키고 마커를 보여주는 프로그램입니다. 이 프로젝트는 C#, Windows Form(.NET Framework) 앱으로 개발합니다. 지역 검색은 카카오 개발자 센터 로컬 REST API를 사용합니다. 지도는 카카오 개발자 센터의 지도 API를 사용합니다. 지도는 웹 에 게시해야 하는데 여기에서는 IIS에 게시하는 것으로 할게요. 3. 컨트롤 배치 먼저 C#, Windows Forms 앱(.NET Framework) 프로젝트를 생성합니다. Form1.cs를 MainForm.cs 로 파일명을 변경할게요.(무..

OpenAPI/C# OpenAPI 2024.01.09

4. 경로 탐색 [경로찾기 프로젝트 – C#, 카카오 지도 API, SK TMAP API 활용 ]

안녕하세요. 언제나휴일입니다. 1. 유튜브 동영상 강의 [C#] 경로 탐색 - 카카오 지역 API + SK TMAP API 앞에서 지역 검색 예광탄에서는 카카오 개발자 센터 로컬 API를 사용했습니다. 지역 검색 및 위치 확인에서는 카카오 개발자 센터 로컬 API와 지도 API를 사용했습니다. 이번에는 경로 탐색 프로그램을 제작할 것입니다. 경로 탐색 프로그램은 카카오 개발자 센터 로컬 API와 SK TMap API를 사용합니다. 동영상 강의는 언제나 휴일 유튜브에 업로드하였습니다. 2. 제작할 프로그램 소개 경로 탐색은 C#, 콘솔 (.NET Framework) 프로젝트입니다. 프로그램을 시작하면서 출발지를 입력합니다. 카카오 개발자 센터 로컬 REST API를 이용하여 검색한 내용을 출력하면 사용자가..

OpenAPI/C# OpenAPI 2024.01.09

5. Final 경로 찾기 Windows Forms 앱[경로찾기 프로젝트 – C#, 카카오 로컬, 지도 API, SK TMAP API 활용 ]

안녕하세요. 언제나휴일입니다. 1. 유튜브 동영상 강의 마지막 프로젝트로 경로 찾기 Windows Forms 앱입니다. 2. 프로그램 소개 이번에 만들 프로젝트는 C#, Windows Forms(.NET Framework) 으로 만들 것입니다. 어떠한 프로그램을 만들 것인지 동작 화면을 보기로 할게요. 출발지와 목적지를 입력하면 검색 결과를 리스트 박스에 보여줍니다. 출발지와 목적지를 리스트 박스에서 선택한 후 경로 찾기 버튼을 누르면 지도에 경로를 선으로 표시합니다. 그리고 리스트 박스에 경로를 요소로 보여줍니다. 시뮬레이션 버튼을 클릭하면 출발지에서 목적지까지 이동하는 모습을 볼수 있습니다. 3. 지도 HTML 코드 편집 앞에서 작성했던 KakaoMap.html 코드를 추가 편집하기로 할게요. 먼저 ..

OpenAPI/C# OpenAPI 2024.01.09

P2P 메신저 – 인증 서비스 구현 및 마무리[C#]

1. 공용 라이브러리 제작 1.1 유튜브 동영상 강의 1.2 구현 및 소스 코드 앞에서 P2P 메신저의 숏 메시지와 파일 송수신 부분을 구현했어요. 그리고 .NET 리모팅 서비스 제작 방법도 실습했었죠. 이번에는 P2P 메신저의 인증 서비스 부분을 구현해 볼 거예요. 현재 구현은 P2P에서 사용자가 상대 IP 주소와 포트 정보를 설정하고 있어요. 이 부분을 인증 서비스를 구현하여 상대 ID만 선택하여 메시지와 파일을 전송할 수 있게 할 거예요. 이를 위해 먼저 인증 서비스를 위한 공용 라이브러리를 제작합시다. 프로젝트는 클래스 라이브러리(.NET Framework)로 제작합니다. using System; using System.Collections.Generic; using System.Data; usi..

.NET 리모팅 [C#]

1. 유튜브 동영상 강의 2. .NET 리모팅이란? .NET 리모팅 기술은 서버 측에 있는 개체를 클라이언트 측에서 마치 자신에게 있는 개체를 사용하는 것처럼 사용할 수 있게 서비스를 하는 기술입니다. .NET 리모팅 서비스를 위해서는 서비스를 제공하는 서버와 서비스를 제공받는 클라이언트가 필요하며 서버 측에서 클라이언트에 제공하는 개체를 정의한 클래스 라이브러리가 필요합니다. 서버 측에서 클라이언트에 제공하는 개체는 MashalByReference에서 파생한 개체로 원격 개체라고 말합니다. 서버 측에서는 채널을 등록하여 원격 개체를 사용할 수 있게 등록합니다. 클라이언트 측에서는 서버 측 채널에 접근하여 원격 개체를 참조하여 사용하는데 클라이언트 측에서 원격 개체를 참조하여 사용할 수 있는 개체를 Pr..

[C#] 원격 제어 프로그램 1. 개요

1. 유튜브 동영상 강의 2. 소개 이 책에서는 C# 언어로 Windows Forms 응용 프로그램 형태로 원격 제어 프로그램을 만드는 전체 과정을 다루고 있습니다. 여기에서 만드는 원격 제어 프로그램은 P2P 방식으로 제어하는 부분과 제어 당하는 부분을 포함하는 프로그램입니다. 프로그램을 시작하면 [그림 1]처럼 원격 제어기 창이 뜨고 제어를 원하는 상대 IP 주소를 입력하여 설정하기 버튼을 클릭합니다. 원격 호스트에서는 [그림 2]처럼 원격 제어 요청을 한 컨트롤러의 주소가 보이면서 원격 제어 허용 버튼의 상태를 활성화합니다. 원격 제어 허용 버튼을 누르면 원격 컨트롤러에서 원격 제어를 시작할 수 있습니다. 이 프로그램을 만드는 과정에서 여러분께서는 Windows Forms 응용 프로그램을 만드는 방..

[C#] 원격 제어 프로그램 2. 원격 제어에서 작성할 형식 소개

1. 유튜브 동영상 강의 2. 작성할 형식 소개 원격 제어 프로그램을 만들기 전에 앞으로 작성할 형식들을 간략하게 소개할게요. MainForm은 프로그램이 시작하면서 뜨는 폼으로 원격 제어를 요청하거나 허용하는 역할을 담당합니다. RemoteClientForm은 원격 제어할 수 있게 원격 컨트롤러에게 원격 호스트의 화면을 보여주기 위한 폼입니다. VirtualCursorForm은 원격 제어 호스트에 프로그램 방식의 인공 커서를 띄워 원격 컨트롤러가 마우스를 사용하여 제어하기 쉽게 시각화하는 폼입니다. Controller는 원격 제어하는 곳에서 이미지 서버를 가동하고 이벤트 전송 클라이언트를 생성하는 역할을 담당합니다. 원격 제어 컨트롤러를 대표하는 클래스로 볼 수 있습니다. Remote는 원격 제어 컨트..

[C#] 원격 제어 프로그램 3. 프로젝트 생성 및 MainForm 자식 컨트롤 배치

1. 유튜브 동영상 강의 2. 프로젝트 생성 및 MainForm 자식 컨트롤 배치 먼저 윈도우즈 Forms 응용 프로젝트 템플릿을 선택하여 프로젝트를 생성하세요. 프로젝트 이름은 원격 제어기로 할게요. 기본으로 제공하는 Form1.cs의 이름을 솔루션 창에서 이름 바꾸기를 하여 MainForm.cs로 변경하세요. 솔루션 창에서 폼의 이름을 바꾸면 마법사에 의해 소스 코드의 클래스 이름도 자동으로 변환해 줍니다. 그리고 MainForm에 자식 컨트롤을 배치하세요. 먼저 MainForm의 캡션을 표시하기 위해 Text 속성을 원격 제어기로 설정하세요. [그림 6]에 표시한 것처럼 다른 컨트롤의 Name 속성과 Text 속성을 설정하세요. 원격 제어 요청한 호스트의 IP 주소를 표시할 텍스트 상자인 tbox_..

[C#] 원격 제어 프로그램 4. 원격 제어 요청 클라이언트

1. 유튜브 동영상 강의 *동영상 강의에서는 Connect 부분을 비동기로 처리하는 BeginConnect를 호출합니다. 그리고 연결 요청 성공과 실패를 처리할 수 있게 이벤트를 추가 정의하였습니다. * 2. 원격 제어 요청 클라이언트 원격 제어를 요청하는 SetupClient 클래스를 구현합시다. SetupClient는 단순히 상대에게 누가 요청하는지 알려주는 역할만 수행할 거예요. 값을 유지할 필요도 없고 개체를 만들 필요도 없는 클래스이므로 정적 클래스로 정의하세요. public static class SetupClient { Setup 클라이언트에서는 원격 제어하고자 하는 상대 IP와 포트 정보를 입력 인자로 받습니다. public static void Setup(string ip, int por..

[C#] 원격 제어 프로그램 6. 원격 제어 요청 수신 서버

1. 유튜브 동영상 강의 6. 원격 제어 요청 수신 서버 원격 제어 요청을 수신하는 SetupServer 클래스도 정적 클래스로 정의합시다. public static class SetupServer { 서버 측은 연결 요청을 수신하기 위한 Listening 소켓을 생성하는 부분과 연결 요청을 대기하고 수용하는 부분으로 나눌 수 있습니다. 특히 연결 요청을 대기하고 수용하는 부분은 무한 반복할 것으로 블로킹을 막기 위해 여기에서는 스레드를 사용할게요. Listening 소켓을 멤버로 선언합시다. static Socket lis_sock; //연결 요청 수신 Listening 소켓 무한 대기하는 부분의 스레드를 멤버로 선언합시다. static Thread accept_thread = null; //연결 요청..

[C#] 원격 제어 프로그램 7. 원격 제어 – 화면 전송

1. 유튜브 동영상 강의 2. 원격 제어 – 화면 전송 이번에는 원격 제어를 허용한 호스트의 전체 화면을 제어하는 컨트롤러에게 주기적으로 화면을 전송해야 합니다. 이 부분을 담당하는 ImageClient를 작성합시다. public class ImageClient { 전송에 사용할 소켓을 멤버 필드로 선언하세요. Socket sock; 생성자에서는 이미지를 수신할 컨트롤러의 IP와 포트 번호를 입력 인자로 받습니다. public ImageClient(string ip, int port) { 소켓을 생성하세요. //소켓 생성 sock = new Socket(AddressFamily.InterNetwork, //네트워크 주소 체계 SocketType.Stream,//전송 방식 ProtocolType.Tcp);..