서버 활용법
타이머 루프, 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 등 여러가지 정보를 가져올 수 있습니다.
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
Was this helpful?