일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 유튜브 동영상 강의
- c언어
- 프로젝트
- 추천
- 알고리즘
- 실습
- 산책하기 좋은 곳
- 네트워크 프로그래밍
- 졸업 작품
- 표준 입출력
- C++
- 동영상
- 충남 천안
- 캡슐화
- 클래스 다이어그램
- 소스 코드
- Windows Forms
- 표준 라이브러리 함수
- 소켓 통신
- c#
- 원격 제어 프로그램
- 파이썬
- 졸업 작품 소재
- 언제나휴일
- 동영상 강의
- 무료 동영상 강의
- 실습으로 다지는 c#
- 강의
- 언제나 휴일
- 안드로이드 앱 개발
Archives
- Today
- Total
프로그래밍 언어 및 기술 [언제나휴일]
[C#] 원격 제어 프로그램 11. 원격 제어 이벤트 수신 버퍼 분석 본문
1. 유튜브 동영상 강의
2. 원격 제어 이벤트 수신 버퍼 분석
메시지를 수신하는 서버에서는 수신한 버퍼의 내용을 분석하는 부분이 필요합니다. 여기에서는 Meta 클래스를 정의하여 분석한 정보를 표현합시다.
public class Meta
{
수신한 메시지 종류를 속성으로 제공합시다.
public MsgType Mt
{
get;
private set;
}
누르거나 뗀 키를 속성으로 제공합시다.
public int Key
{
get;
private set;
}
마우스 좌표를 속성으로 제공합시다.
public Point Now
{
get;
private set;
}
생성자는 수신한 버퍼를 입력 인자로 받습니다.
public Meta(byte[] data)
{
메시지 종류를 설정하세요.
Mt = (MsgType)data[0];//메시지 종류 설정
메시지 종류에 따라 수신한 버퍼를 변환합니다. 키를 누르거나 뗀 이벤트일 때는 수신한 버퍼의 내용을 키로 변환하고 마우스 이동 이벤트일 때는 좌표로 변환하세요.
switch (Mt)//메시지 종류에 따라
{
case MsgType.MT_KDOWN:
case MsgType.MT_KEYUP: MakingKey(data); break;//데이터를 키로 변환
case MsgType.MT_M_MOVE: MakingPoint(data); break;//데이터를 좌표로 변환
}
}
마우스 이동 이벤트일 때 좌표로 변환하는 MakingPoint 메서드를 정의합시다.
private void MakingPoint(byte[] data)
{
data를 좌표로 변환하세요.
//data를 좌표로 변환
Point now = new Point(0, 0);
인덱스 1~4까지 4바이트는 x좌표, 5~8까지 4바이트에는 y 좌표값으로 변환합니다.
now.X = (data[4] << 24) + (data[3] << 16) + (data[2] << 8) + (data[1]);
now.Y = (data[8] << 24) + (data[7] << 16) + (data[6] << 8) + (data[5]);
Now = now;
}
수신한 데이터를 키로 변환하는 MakingKey 메서드를 정의하세요.
private void MakingKey(byte[] data)
{
data를 키로 변환하세요.
//data를 키로 변환
Key = (data[4] << 24) + (data[3] << 16) + (data[2] << 8) + (data[1]);
}
}
다음은 이번 실습에서 작성한 소스 코드입니다.
//Meta.cs
using System.Drawing;
namespace 원격제어기
{
/// <summary>
/// 원격 제어 이벤트 수신 정보를 변환한 클래스
/// </summary>
public class Meta
{
/// <summary>
/// 원격 제어 이벤트 종류 - 가져오기
/// </summary>
public MsgType Mt
{
get;
private set;
}
/// <summary>
/// 누르거나 뗀 키 - 가져오기
/// </summary>
public int Key
{
get;
private set;
}
/// <summary>
/// 마우스 좌표 - 가져오기
/// </summary>
public Point Now
{
get;
private set;
}
/// <summary>
/// 생성자
/// </summary>
/// <param name="data">수신한 원격 제어 이벤트 </param>
public Meta(byte[] data)
{
Mt = (MsgType)data[0];//메시지 종류 설정
switch (Mt)//메시지 종류에 따라
{
case MsgType.MT_KDOWN:
case MsgType.MT_KEYUP:
MakingKey(data); break;//데이터를 키로 변환
case MsgType.MT_M_MOVE:
MakingPoint(data); break;//데이터를 좌표로 변환
}
}
private void MakingPoint(byte[] data)
{
//data를 좌표로 변환
Point now = new Point(0, 0);
now.X = (data[4] << 24) + (data[3] << 16) + (data[2] << 8) + (data[1]);
now.Y = (data[8] << 24) + (data[7] << 16) + (data[6] << 8) + (data[5]);
Now = now;
}
private void MakingKey(byte[] data)
{
//data를 키로 변환
Key = (data[4] << 24) + (data[3] << 16) + (data[2] << 8) + (data[1]);
}
}
}
'프로젝트 > C# 원격제어 프로그램' 카테고리의 다른 글
[C#] 원격 제어 프로그램 7. 원격 제어 – 화면 전송 (0) | 2024.01.08 |
---|---|
[C#] 원격 제어 프로그램 8. 원격 제어 – 화면 수신 이벤트 (1) | 2024.01.08 |
[C#] 원격 제어 프로그램 9. 원격 제어 – 화면 수신 서버 (0) | 2024.01.08 |
[C#] 원격 제어 프로그램 10. 원격 제어 이벤트 전송 클라이언트 (1) | 2024.01.08 |
[C#] 원격 제어 프로그램 12. 원격 제어 이벤트 수신 이벤트 (0) | 2024.01.08 |
[C#] 원격 제어 프로그램 13. 원격 제어 이벤트 수신 서버 (1) | 2024.01.08 |
[C#] 원격 제어 프로그램 14. 원격 제어 컨트롤러 (0) | 2024.01.08 |
[C#] 원격 제어 프로그램 15. 키보드, 마우스 이벤트 래퍼 (1) | 2024.01.08 |