서버와 클라이언트
서버 시작하기
서버를 시작하기 위해 먼저 아래 예시처럼 서버 객체를 얻어야 합니다. 서버를 생성하자마자 클라이언트와의 통신을 하거나 스레드 풀이 바로 생성되진 않으므로 생성된 객체의 Start를 호출해서 서버를 실행해야 합니다.
1. 서버 생성
m_netServer = Proud::CNetServer::Create();
// 힐딩된 객체는 delete 연산자로 제거할 수 있습니다.
delete m_netServer;Nettention.Proud.NetServer netServer = new Nettention.Proud.NetServer();서버를 시작하기에 앞서, 서버의 UDP 포트 방식을 반드시 확인해 주시기 바랍니다.
2. 준비
// ProudNet을 include 합니다.
#include “include\ProudNetServer.h”
// ProudNet은 모든 객체가 Proud라는 namespace로 묶여 있습니다.
using namespace Proud;
// port 정의
int g_ServerPort = 33334;// Proud를 사용하도록 추가
using Nettention.Proud;
// 미리 사용할 port 정의
int serverPort = 33334;3. 서버 시작
먼저 서버 객체를 생성한 후 SetEventSink 함수를 호출합니다. 서버에서 일어나는 이벤트를 콜백받기 위한 객체를 등록하는 과정입니다. INetServerEvent 객체를 상속받아 생성한 객체의 포인터를 넘겨주게 되면 서버는 이 객체를 통하여 이벤트를 콜백합니다.
💡위 코드 예시에서 g_eventSink 가 아래 구조로 생성된 객체입니다.
CNetClientInfo 객체는 접속된 클라이언트 정보를 포함하며, CNetClientInfo의 멤버 m_HostID는 각 호스트를 구분할 수 있는 ID값이 됩니다.
💡C#에 NetClientInfo가 C++의 CNetClientInfo와 같은 역할을 합니다.
4. 연결 해제
Stop
서버 정지. 모든 Connection을 끊습니다.
CloseConnection(Client의 HostID)
해당하는 클라이언트와의 접속을 끊습니다.
5. 클라이언트 연결받기 시작
서버에서 클라이언트 연결을 받기 위해서는 서버 측 리스닝 포트(Listening Port)와 스레드 풀을 준비합니다. 그러기 위해, Server 객체를 생성한 후, Start 메서드를 호출해야 합니다.
클라이언트 시작하기
서버와 마찬가지로 클라이언트 또한 객체 생성 후 서버와 연결이 가능합니다.
1. 클라이언트 생성
2. 준비
3. 시작
클라이언트에서 서버에 연결하는 동안 발생하는 이벤트
Connect 가 실행되면 서버에는 OnConnectionRequest 가 도착하는데 여기서 연결을 시도하는 클라이언트를 거부할 수 있습니다.
OnConnectionRequest 에서 클라이언트 연결을 수용하면 모든 연결 과정을 마치게 되며, 클라이언트와 서버에서는 아래 코드 예시처럼 이벤트를 받게 됩니다.
4. 연결 해제
활용
서버 활용법클라이언트 활용법Last updated
Was this helpful?