32. 이벤트 기반 소켓 동작 2단계
728x90

목표
이벤트 전달용 <데이터 클래스> 자료형 구현
더보기








// [이벤트 전달용 데이터 클래스]
public class TextReceivedEventArgs : EventArgs
{
public string ClientInfo { get; set; }
public string TextReceived { get; set; }
public TextReceivedEventArgs(string _clientInfo, string _textReceived)
{
ClientInfo = _clientInfo;
TextReceived = _textReceived;
}
}
이벤트 정의 구현
더보기







// [1] 텍스트 수신 이벤트
public event EventHandler<TextReceivedEventArgs>? TextReceivedEvent

// [2] 텍스트 수신 이벤트 발생 메서드
public void OnRaiseTextReceivedEvent(TextReceivedEventArgs e)
{
// [3] 이벤트 발생
TextReceivedEvent?.Invoke(this, e);
}
이벤트 실행 구현
더보기





// [이벤트 발생 시 전달할 데이터 생성]
string clientInfo = client.Client.RemoteEndPoint?.ToString() ?? "Unknown";
CustomEventArgs eventArgs = new CustomEventArgs(clientInfo);

// [이벤트 발생 메서드 호출]
OnRaiseClientConnectedEvent(eventArgs);
폼에 적용하기
더보기






// 폼이 로드될 때 이벤트 핸들러를 등록합니다.
void HandleClientConnect(object? sender, CustomEventArgs e)
{
//MessageBox.Show($"클라이언트가 접속했습니다. {e.NewClientInfo}");
textBox2.AppendText($"클라이언트가 접속했습니다. " +
$"{e.NewClientInfo}{System.Environment.NewLine}" );
}

// [텍스트 수신 이벤트 핸들러]
void HandleTextReceived(object? sender, TextReceivedEventArgs e)
{
textBox2.AppendText(
$"[{e.ClientInfo}] : {e.TextReceived}{System.Environment.NewLine}");
}

// [텍스트 수신 이벤트 핸들러 등록]
mServer.TextReceivedEvent += HandleTextReceived;
실행 테스트
