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#] 원격 제어 프로그램 6. 원격 제어 요청 수신 서버 (0) | 2024.01.08 |
---|---|
[C#] 원격 제어 프로그램 7. 원격 제어 – 화면 전송 (0) | 2024.01.08 |
[C#] 원격 제어 프로그램 8. 원격 제어 – 화면 수신 이벤트 (1) | 2024.01.08 |
[C#] 원격 제어 프로그램 9. 원격 제어 – 화면 수신 서버 (0) | 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 |