반응형
원격 제어 요청을 수신하는 서버 클래스를 구현합니다.
현재까지 작성한 원격 제어 요청 클라이언트와 서버 및 이벤트 인자 형식을 이용하여 테스트를 수행합니다.
테스트는 원격 제어 요청을 정상적으로 전달하고 상대측에서 요청 클라이언트의 IP와 PORT 정보를 정상적으로 수신하고 폼에 전달하는지 확인합니다.
소스 코드
SetupServer.cs
//SetupServer.cs
using System.Net.Sockets;
using System.Threading;
using System.Net;
namespace 원격제어기
{
/// <summary>
/// 연결 요청 수신 서버 클래스 - 정적 클래스
/// </summary>
public static class SetupServer
{
static Socket lis_sock; //연결 요청 수신 Listening 소켓
static Thread accept_thread = null; //연결 요청 허용 스레드
/// <summary>
/// 연결 요청 수신 이벤트 핸들러
/// </summary>
static public event RecvRCInfoEventHandler RecvedRCInfo = null;
/// <summary>
/// 연결 요청 수신 서버 시작 메서드
/// </summary>
/// <param name="ip">서버의 IP주소</param>
/// <param name="port">포트</param>
static public void Start(string ip, int port)
{
//로컬 호스트의 IPEndPoint 개체 생성
IPAddress ipaddr = IPAddress.Parse(ip);
IPEndPoint ep = new IPEndPoint(ipaddr, port);
//연결 요청 수신 Listening 소켓 생성
lis_sock = new Socket(AddressFamily.InterNetwork, //네트워크 주소 체계
SocketType.Stream,//전송 방식
ProtocolType.Tcp);//프로토콜
lis_sock.Bind(ep);//소켓과 IPEndPoint 결합
lis_sock.Listen(1); //Back 로그 큐 크기 설정
//연결 요청 허용 쓰레드 진입점 개체 생성
ThreadStart ts = new ThreadStart(AcceptLoop);
accept_thread = new Thread(ts); //연결 요청 허용 쓰레드 생성
accept_thread.Start(); //연결 요청 허용 쓰레드 시작
}
static void AcceptLoop()
{
try
{
while (true)
{
Socket do_sock = lis_sock.Accept();//연결 수락
if (RecvedRCInfo != null) //연결 요청 수신 이벤트 핸들러가 있을 때
{
RecvRCInfoEventArgs e = new RecvRCInfoEventArgs(
do_sock.RemoteEndPoint);//이벤트 인자 생성
RecvedRCInfo(null, e); //이벤트 발생
}
do_sock.Close();//소켓 닫기
}
}
catch
{
Close();
}
}
/// <summary>
/// 연결 요청 수신 서버 닫기
/// </summary>
public static void Close()
{
if (lis_sock != null)
{
lis_sock.Close();
lis_sock = null;
}
}
}
}
반응형
'프로젝트 > 원격 제어 프로그램 만들기' 카테고리의 다른 글
원격 제어 프로그램 만들기 8. 화면 수신 이벤트 인자 클래스 구현 (0) | 2020.05.12 |
---|---|
원격 제어 프로그램 만들기 7. 원격 제어 – 화면 전송 (0) | 2020.05.12 |
원격 제어 프로그램 만들기 - 5. 원격 제어 요청 수신 이벤트 인자 클래스 구현 (0) | 2020.05.09 |
원격 제어 프로그램 만들기 - 4. 원격 제어 요청 클라이언트 구현 (0) | 2020.05.09 |
원격제어 프로그램 만들기 - 3. MainForm 배치 (0) | 2020.05.09 |