서버 활용법

타이머 루프, RMI, 이벤트 처리하기

서버에서 매 시간마다 호출하지 않아도 되지만, 일정 시간마다 무언가를 수행하고자 한다면 서버를 시작할 때 타이머 콜백 함수, 콜백 주기, 콜백 함수에 전달할 사용자 정의 데이터를 지정해야 합니다.

이들을 지정하는 곳은 다음과 같습니다.

언어타이머 콜백 함수콜백 주기사용자 정의 데이터

C++

Proud.INetServerEvent.OnTimerCallback

Proud.CStartServerParameter.m_timerCallbackInterval

Proud.CStartServerParameter.m_timerCallbackContext

C#

Nettention.Proud.NetServer.TickDelegate

Nettention.Proud.StartServerParameter.timerCallbackIntervalMs

-

여러가지 정보 가져오기

Server 에서는 클라이언트 목록, P2P 그룹 정보, 클라이언트의 IP 정보, ping time 등 여러가지 정보를 가져올 수 있습니다.

C++ 함수C# 함수설명

Proud.CNetServer.GetClientCount

Nettention.Proud.NativeNetServer.GetClientCount

연결된 클라이언트의 수를 가져옵니다.

Proud.CNetServer.GetClientHostIDs

Nettention.Proud.NetServer.GetClientHostIDs

연결된 클라이언트의 HostID 목록을 가져옵니다.

Proud.CNetServer.GetClientInfo

Nettention.Proud.NetServer.GetClientInfo

매개변수로 주어진 HostID를 가진 클라이언트의 정보를 가져옵니다.

Proud.CNetServer.GetJoinedP2PGroups

-

매개변수로 주어진 HostID를 가진 클라이언트가 속해있는 모든 p2p 그룹을 가져옵니다.

Proud.CNetServer.GetLastUnreliablePingMs

Nettention.Proud.NetServer.GetLastUnreliablePingMs

가장 최근에 찍힌 ping time 을 milisecond 단위로 반환합니다.

Proud.CNetServer.GetP2PGroupInfo

Nettention.Proud.NetServer.GetP2PGroupInfo

매개변수로 주어진 p2p 그룹의 정보를 가져옵니다.

Proud.CNetServer.GetP2PGroups

-

모든 p2p 그룹을 가져옵니다.

Proud.CNetServer.GetRecentUnreliablePingMs

Nettention.Proud.NetServer.GetRecentUnreliablePingMs

가장 최근에 찍힌 ping time 을 milisecond 단위로 반환합니다.

Proud.CNetServer.GetRemoteIdentifiableLocalAddrs

-

클라이언트가 인식할 수 있는 서버의 listening port address를 가져옵니다.

Proud.CNetServer.GetStats

Nettention.Proud.NetServer.GetStats

서버 상태 정보를 가져옵니다.

Proud.CNetServer.GetTcpListenerLocalAddr

Nettention.Proud.NetServer.GetTcpListenerLocalAddr

Tcp 통신이 가능한 로컬 주소를 모두 가져옵니다.

Proud.CNetServer.GetTimeMs

Nettention.Proud.NetServer.GetTimeMs

현재 서버 시간을 ms 단위로 가져옵니다.

Proud.CNetServer.GetUdpListenerLocalAddrs

-

Udp 통신이 가능한 로컬 주소를 모두 가져옵니다.

Proud.CNetServer.IsConnectedClient

Nettention.Proud.NativeNetServer.IsConnectedClient

매개변수로 주어진 HostID를 가지고 있는 클라이언트가 연결된 상태인지를 반환합니다.

서버 간 통신하기

서버가 서로 역할 분담을 해서 작동할 경우, 각 서버 간 통신을 위해 서로의 연결을 구축할 필요가 있습니다. 이때 P2P 그룹을 활용하면 서버 간 통신을 용이하게 구성할 수 있습니다.

  • 1개의 팜 서버(Farm server)를 둡니다. 서버 컴퓨터가 존재하는 LAN 그룹을 서버 팜(server farm)이라 부릅니다.

  • 다른 모든 서버는 팜 서버에 접속하는 팜 클라이언트(Farm Client)끼리 P2P 통신을 합니다.

각 팜 클라이언트, 즉 서버 프로세스끼리는 서버, 클라이언트 상관없이 서로 직접 통신을 주고 받을 수 있습니다. 무작위 형태의 그물망 통신이 가능하고 서로 간 자유로운 종속 관계를 구축할 수 있습니다.

서버 간 통신을 위해 net_main 사용을 권장하며 통신의 message_length 도 고려되어야 합니다.


⬅️ 뒤로

Last updated