프로젝트/원격 제어 프로그램 만들기

원격 제어 프로그램 만들기 - 4. 원격 제어 요청 클라이언트 구현

언제나휴일 2020. 5. 9. 12:47
반응형

 

원격 제어를 하겠다고 요청하는 클라이언트 클래스를 구현합니다.

소스 코드

SetupClient.cs

using System;
using System.Net;
using System.Net.Sockets;

namespace 원격제어기
{
    /// <summary>
    /// 원격 제어 요청 클라이언트 - 정적 클래스
    /// </summary>
    public static class SetupClient
    {
        public static event EventHandler ConnectedEventHandler = null;
        public static event EventHandler ConnectFailedEventHandler = null;
        static Socket sock;
        /// <summary>
        /// 원격 제어 요청 메서드
        /// </summary>
        /// <param name="ip">상대 IP 주소</param>
        /// <param name="port">상대 포트 번호</param>
        public static void Setup(string ip, int port)
        {
            IPAddress ipaddr = IPAddress.Parse(ip); //상대 IP 주소 개체를 생성
            IPEndPoint ep = new IPEndPoint(ipaddr, port); //IP 단말 주소(IP주소 + 포트번호) 개체 생성
            //TCP 소켓 생성(네트워크 주소 체계, 전송 방식, 프로토콜)
            sock = new Socket(AddressFamily.InterNetwork, //네트워크 주소 체계
                SocketType.Stream, //전송 방식
                ProtocolType.Tcp);//프로토콜
            //sock.Connect(ip, port);
            sock.BeginConnect(ep, DoConnect, sock);
        }
        static void DoConnect(IAsyncResult result)
        {            
            try
            {
                sock.EndConnect(result);
                if(ConnectedEventHandler != null)
                {
                    ConnectedEventHandler(null, new EventArgs());//연결 성공
                }
            }
            catch
            {
                if(ConnectFailedEventHandler != null)
                {
                    ConnectFailedEventHandler(null, new EventArgs());//연결 실패
                }
            }
            sock.Close();
        }
    }
}

 

 

원격 제어 프로그램 4. 원격 제어 요청 클라이언트 – 언제나 휴일

*동영상 강의에서는 Connect 부분을 비동기로 처리하는 BeginConnect를 호출합니다. 그리고 연결 요청 성공과 실패를 처리할 수 있게 이벤트를 추가 정의하였습니다. * 원격 제어를 요청하는 SetupClient 클래스를 구현합시다. SetupClient는 단순히 상대에게 누가 요청하는지 알려주는 역할만 수행할 거예요. 값을 유지할 필요도 없고 개체를 만들 필요도 없는 클래스이므로 정적 클래스로 정의하세요. public static class S

ehpub.co.kr

 

반응형