Proud::CNetClient 클래스 참조abstract

네트워크 클라이언트 더 자세히 ...

Proud::CNetClient에 대한 상속 다이어그램 :

Public 멤버 함수

virtual bool Connect (const CNetConnectionParam &connectionInfo)=0
 
virtual bool Connect (const CNetConnectionParam &connectionInfo, ErrorInfoPtr &outError)=0
 
virtual void Disconnect ()=0
 
virtual void Disconnect (const CDisconnectArgs &args)=0
 
virtual void Disconnect (ErrorInfoPtr &outError)=0
 
virtual void Disconnect (const CDisconnectArgs &args, ErrorInfoPtr &outError)=0
 
virtual void DisconnectAsync (const CDisconnectArgs &args)=0
 
virtual void FrameMove (int maxWaitTime=0, CFrameMoveResult *outResult=NULL)=0
 
virtual void FrameMove (int maxWaitTime, CFrameMoveResult *outResult, ErrorInfoPtr &outError)=0
 
virtual void GetGroupMembers (HostID groupHostID, HostIDArray &output)=0
 
virtual int64_t GetIndirectServerTimeMs (HostID peerHostID)=0
 
virtual HostID GetLocalHostID ()=0
 
virtual String GetNatDeviceName ()=0
 
virtual void GetLocalJoinedP2PGroups (HostIDArray &output)=0
 
virtual void GetStats (CNetClientStats &outVal)=0
 
virtual int64_t GetP2PServerTimeMs (HostID groupHostID)=0
 
virtual AddrPort GetLocalUdpSocketAddr (HostID remotePeerID)=0
 
virtual bool GetDirectP2PInfo (HostID remotePeerID, CDirectP2PInfo &outInfo)=0
 
virtual AddrPort GetServerAddrPort ()=0
 
virtual bool GetPeerInfo (HostID peerHostID, CNetPeerInfo &output)=0
 
virtual bool SetHostTag (HostID hostID, void *hostTag)=0
 
virtual int64_t GetServerTimeMs ()=0
 
virtual int64_t GetServerTimeDiffMs ()=0
 
virtual ConnectionState GetServerConnectionState (CServerConnectionState &output)=0
 
virtual void GetWorkerState (CClientWorkerInfo &output)=0
 
bool HasServerConnection ()
 
virtual void SetEventSink (INetClientEvent *eventSink)=0
 
virtual INetClientEventGetEventSink ()=0
 
double GetLastUnreliablePingSec (HostID remoteHostID, ErrorType *error=NULL)
 
virtual int GetLastUnreliablePingMs (HostID remoteHostID, ErrorType *error=NULL)=0
 
virtual int GetLastReliablePingMs (HostID remoteHostID, ErrorType *error=NULL)=0
 
double GetLastReliablePingSec (HostID remoteHostID, ErrorType *error=NULL)
 
double GetRecentUnreliablePingSec (HostID remoteHostID, ErrorType *error=NULL)
 
virtual int GetRecentUnreliablePingMs (HostID remoteHostID, ErrorType *error=NULL)=0
 
virtual int GetRecentReliablePingMs (HostID remoteHostID, ErrorType *error=NULL)=0
 
double GetRecentReliablePingSec (HostID remoteHostID, ErrorType *error=NULL)
 
virtual bool InvalidateUdpSocket (HostID peerID, CDirectP2PInfo &outDirectP2PInfo)=0
 
virtual bool RestoreUdpSocket (HostID peerID)=0
 
virtual void TEST_FallbackUdpToTcp (FallbackMethod mode)=0
 
virtual void TEST_EnableVirtualSpeedHack (int64_t multipliedSpeed)=0
 
virtual void TEST_SetPacketTruncatePercent (Proud::HostType hostType, int percent)=0
 
virtual bool GetPeerReliableUdpStats (HostID peerID, ReliableUdpHostStats &output)=0
 
virtual bool IsLocalHostBehindNat (bool &output)=0
 
virtual int GetInternalVersion ()=0
 
virtual int GetMessageMaxLength ()=0
 
virtual AddrPort GetPublicAddress ()=0
 
virtual void GetUserWorkerThreadInfo (CFastArray< CThreadInfo > &output)=0
 
virtual void GetNetWorkerThreadInfo (CFastArray< CThreadInfo > &output)=0
 
virtual bool GetSocketInfo (HostID remoteHostID, CSocketInfo &output)=0
 
virtual void SetApplicationHint (const CApplicationHint &hint)=0
 
virtual bool SendUserMessage (const HostID *remotes, int remoteCount, const RmiContext &rmiContext, uint8_t *payload, int payloadLength)=0
 
bool SendUserMessage (HostID remote, const RmiContext &rmiContext, uint8_t *payload, int payloadLength)
 
virtual ErrorType SetCoalesceIntervalMs (HostID remote, int intervalMs)=0
 
virtual ErrorType SetCoalesceIntervalToAuto (HostID remote)=0
 
virtual bool SendEmergencyLogData (String serverAddr, uint16_t serverPort)=0
 
virtual void SetDefaultTimeoutTimeMs (int newValInMs)=0
 
virtual AddrPort GetTcpLocalAddr ()=0
 
virtual AddrPort GetUdpLocalAddr ()=0
 
virtual String TEST_GetDebugText ()=0
 
virtual void TEST_GetTestStats (CTestStats2 &output)=0
 
virtual void TEST_FakeTurnOffTcpReceive ()=0
 
virtual void TEST_SetAutoConnectionRecoverySimulatedDelay (int timeMs)=0
 
virtual ErrorType ForceP2PRelay (HostID remotePeerID, bool enable)=0
 
virtual ErrorType GetUnreliableMessagingLossRatioPercent (HostID remotePeerID, int *outputPercent)=0
 
- Proud::IRmiHost(으)로부터 상속된 Public 멤버 함수
virtual void AttachProxy (IRmiProxy *proxy)=0
 
void AttachProxy (IRmiProxy *proxy, ErrorInfoPtr &outError)
 
virtual void AttachStub (IRmiStub *stub)=0
 
void AttachStub (IRmiStub *stub, ErrorInfoPtr &outError)
 
virtual void DetachProxy (IRmiProxy *proxy)=0
 
void DetachProxy (IRmiProxy *proxy, ErrorInfoPtr &outError)
 
virtual void DetachStub (IRmiStub *stub)=0
 
void DetachStub (IRmiStub *stub, ErrorInfoPtr &outError)
 
virtual void SetTag (void *value)=0
 
virtual void * GetTag ()=0
 
virtual bool RunAsync (HostID taskOwner, LambdaBase_Param0< void > *func)=0
 
virtual bool IsSimplePacketMode ()=0
 
virtual void ShowError_NOCSLOCK (ErrorInfoPtr errorInfo)=0
 
virtual void ShowNotImplementedRmiWarning (const PNTCHAR *RMIName)=0
 
virtual void PostCheckReadMessage (CMessage &msg, const PNTCHAR *RMIName)=0
 
virtual void ConvertGroupToIndividualsAndUnion (int numberOfsendTo, const HostID *sendTo, HostIDArray &output, FavoriteLV &favoriteLV)=0
 
virtual CriticalSectionGetCriticalSection ()=0
 
- Proud::IHlaHost_C(으)로부터 상속된 Public 멤버 함수
virtual void HlaAttachEntityTypes (CHlaEntityManagerBase_C *entityManager)=0
 
virtual void HlaSetDelegate (IHlaDelegate_C *dg)=0
 
virtual void HlaFrameMove ()=0
 

정적 Public 멤버 함수

static CNetClientCreate ()
 

Public 속성

LambdaBaseHolder_Param2< void,
ErrorInfo *, const ByteArray & > 
OnJoinServerComplete
 See Proud.INetClientEvent.OnJoinServerComplete for details.
 
LambdaBaseHolder_Param1< void,
ErrorInfo * > 
OnLeaveServer
 See Proud.INetClientEvent.OnLeaveServer for details.
 
LambdaBaseHolder_Param4< void,
HostID, HostID, int, const
ByteArray & > 
OnP2PMemberJoin
 See Proud.INetClientEvent.OnP2PMemberJoin for details.
 
LambdaBaseHolder_Param3< void,
HostID, HostID, int > 
OnP2PMemberLeave
 See Proud.INetClientEvent.OnP2PMemberLeave for details.
 
LambdaBaseHolder_Param2< void,
HostID, ErrorType
OnChangeP2PRelayState
 See Proud.INetClientEvent.OnChangeP2PRelayState for details.
 
LambdaBaseHolder_Param1< void,
ErrorType
OnChangeServerUdpState
 See Proud.INetClientEvent.OnChangeServerUdpState for details.
 
LambdaBaseHolder_Param1< void,
CRemoteOfflineEventArgs & > 
OnP2PMemberOffline
 See Proud.INetClientEvent.OnP2PMemberOffline for details.
 
LambdaBaseHolder_Param1< void,
CRemoteOnlineEventArgs & > 
OnP2PMemberOnline
 See Proud.INetClientEvent.OnP2PMemberOnline for details.
 
LambdaBaseHolder_Param1< void,
CRemoteOfflineEventArgs & > 
OnServerOffline
 See Proud.INetClientEvent.OnServerOffline for details.
 
LambdaBaseHolder_Param1< void,
CRemoteOnlineEventArgs & > 
OnServerOnline
 See Proud.INetClientEvent.OnServerOnline for details.
 
LambdaBaseHolder_Param0< void > OnSynchronizeServerTime
 See Proud.INetClientEvent.OnSynchronizeServerTime for details.
 
- Proud::HasCoreEventFunctionObjects(으)로부터 상속된 Public 속성
LambdaBaseHolder_Param1< void,
ErrorInfo * > 
OnError
 See Proud.INetCoreEvent.OnError for details.
 
LambdaBaseHolder_Param1< void,
Exception & > 
OnException
 See Proud.INetCoreEvent.OnException for details.
 
LambdaBaseHolder_Param1< void,
ErrorInfo * > 
OnInformation
 See Proud.INetCoreEvent.OnInformation for details.
 
LambdaBaseHolder_Param1< void,
RmiID > 
OnNoRmiProcessed
 See Proud.INetCoreEvent.OnNoRmiProcessed for details.
 
LambdaBaseHolder_Param4< void,
HostID, const RmiContext
&, uint8_t *, int > 
OnReceiveUserMessage
 See Proud.INetCoreEvent.OnReceiveUserMessage for details.
 
LambdaBaseHolder_Param1< void,
ErrorInfo * > 
OnWarning
 See Proud.INetCoreEvent.OnWarning for details.
 
LambdaBaseHolder_Param1< void,
void * > 
OnTick
 See Proud.INetCoreEvent.OnTick for details.
 
LambdaBaseHolder_Param0< void > OnUserWorkerThreadCallbackBegin
 See Proud.INetCoreEvent.OnUserWorkerThreadCallbackBegin for details.
 
LambdaBaseHolder_Param0< void > OnUserWorkerThreadCallbackEnd
 See Proud.INetCoreEvent.OnUserWorkerThreadCallbackEnd for details.
 

추가로 상속된 멤버들

- Proud::IRmiHost(으)로부터 상속된 Protected 멤버 함수
virtual bool Send (const CSendFragRefs &sendData, const SendOpt &sendContext, const HostID *sendTo, int numberOfsendTo, int &compressedPayloadLength, FavoriteLV &favoriteLV)=0
 

상세한 설명

네트워크 클라이언트

게임 클라이언트와 게임 서버의 네트워킹과 네트워크 클라이언트간의 P2P 통신을 위한 클라이언트입니다.

자세한 내용은 네트워크 클라이언트 에 있습니다.

멤버 함수 문서화

virtual bool Proud::CNetClient::Connect ( const CNetConnectionParam connectionInfo)
pure virtual

서버 연결 과정을 시작합니다.

  • 이 함수는 즉시 리턴합니다. 따라서, 이 함수가 리턴했다고 해서 서버와의 연결이 모두 끝난 것은 아닙니다.
  • 이 함수 호출 후 INetClientEvent.OnJoinServerComplete() 이벤트가 도착한 후에야 서버 연결의 성사 여부를 파악할 수 있습니다.
매개변수
param연결할 서버 정보입니다.
반환값
이미 다른 서버에 연결된 상태이면 false를 리턴한다. 성공적으로 연결 요청을 시작했으면 true가 리턴됩니다.
static CNetClient* Proud::CNetClient::Create ( )
static

새 인스턴스를 생성합니다.

virtual void Proud::CNetClient::Disconnect ( )
pure virtual

서버와의 연결을 해제한다. 아울러 모든 P2P 그룹에서도 탈퇴한다.

  • 자세한 것은 동명 메서드 참조
virtual void Proud::CNetClient::Disconnect ( const CDisconnectArgs args)
pure virtual

서버와의 연결을 해제한다. 아울러 모든 P2P 그룹에서도 탈퇴한다.

매개변수
gracefulDisconnectTimeout서버와의 연결을 해제하는 과정을 처리하기 위해 클라이언트는 일정 시간의 시간을 요구한다. 이 값은 서버와의 연결을 해제하는 데까지 허락하는 최대 시간(초)이다. 이 값은 통상적으로 1 이내가 적당하지만, 너무 지나치게 작은 값을 잡는 경우, 클라이언트는 서버와의 연결을 종료했지만 서버측에서 클라이언트의 연결 해제를 즉시 감지하지 못하는 경우가 있을 수 있다.
comment여기에 채워진 데이터는 INetServerEvent.OnClientLeave에서 받아진다. 즉 클라이언트가 서버와의 연결을 해제하되 서버에게 마지막으로 데이터를 보내고자 할 때(예: 접속을 끊는 이유를 보내기) 유용하다. gracefulDisconnectTimeout가 너무 짧으면 못 갈수 있다.
virtual void Proud::CNetClient::Disconnect ( ErrorInfoPtr outError)
pure virtual

서버와의 연결을 해제한다. 아울러 모든 P2P 그룹에서도 탈퇴한다. UE4/PS4 와 같이 사용자 단에서 try/catch 를 사용 할 수 없는 환경에서, 에러 메세지를 통보 받을 때 사용 하도록 한다.

  • 자세한 것은 동명 메서드 참조
virtual void Proud::CNetClient::Disconnect ( const CDisconnectArgs args,
ErrorInfoPtr outError 
)
pure virtual

서버와의 연결을 해제한다. 아울러 모든 P2P 그룹에서도 탈퇴한다. UE4/PS4 와 같이 사용자 단에서 try/catch 를 사용 할 수 없는 환경에서, 에러 메세지를 통보 받을 때 사용 하도록 한다.

  • 자세한 것은 동명 메서드 참조
virtual ErrorType Proud::CNetClient::ForceP2PRelay ( HostID  remotePeerID,
bool  enable 
)
pure virtual

사용자가 지정한 다른 P2P peer와의 통신을 강제로 relay로 되게 할지를 지정하는 함수입니다.

이 기능이 요긴하게 쓰이는 경우는 다음과 같습니다.

  • 클라이언트측의 P2P 통신량이 과다해서, 몇몇 P2P peer와의 통신은 relay로 전환하고자 할 경우
    매개변수
    remotePeerIDRelay 전환시킬 Peer 의 HostID값입니다.
    enabletrue이면 강제 relay 를 켭니다.
virtual void Proud::CNetClient::FrameMove ( int  maxWaitTime = 0,
CFrameMoveResult outResult = NULL 
)
pure virtual

[디버깅용] 전체 P2P 그룹의 상태를 덤프로 남긴다.

수신된 RMI나 이벤트를 처리합니다. 가장 마지막에 FrameMove을 호출한 이후부터 지금까지 서버로부터 수신된 RMI나 INetClientEvent의 콜백 이벤트는 클라이언트 메모리에 누적되어 있습니다. 그리고 그것들을 이 메서드에 의해 일제히 콜백이 발생하게 합니다.

  • 사용자는 일정 시간마다 이를 호출해서 RMI 수신 처리 및 발생 이벤트를 처리하도록 해야 합니다. 일반적인 경우 사용자는 이 메서드를 매 렌더 프레임마다 호출합니다.
  • 이 메서드를 장시간 호출 안한다고 해서 타 호스트나 서버와의 연결이 끊어지는 일은 없습니다.
매개변수
maxWaitTimeMs처리할 이벤트나 수신 메시지가 있을 때까지, 얼마나 오래 기다릴 것인지에 대한 값입니다. 0이면 기다리지 않고 즉시 리턴합니다. 게임 등 렌더링 루프 안에서는 0이 일반적이며, 렌더링 루프가 없는 일반 앱에서는 적당한 값 (가령 200ms)를 넣습니다.
outResultFrameMove 호출시 처리 결과 보고를 얻습니다. 생략 가능한 파라메터입니다.
virtual void Proud::CNetClient::FrameMove ( int  maxWaitTime,
CFrameMoveResult outResult,
ErrorInfoPtr outError 
)
pure virtual

No-throw function. Exception is stored to outError. Used for UE4, etc.

virtual bool Proud::CNetClient::GetDirectP2PInfo ( HostID  remotePeerID,
CDirectP2PInfo outInfo 
)
pure virtual

이 호스트가 remotePeerID가 가리키는 타 Peer와의 통신을 위해 홀펀칭된 정보를 얻는다.

매개변수
remotePeerID타 피어의 ID
outInfo타 피어와의 통신을 위한 홀펀칭 정보가 채워질 곳
반환값
홀펀칭된 Peer인 경우 true, 그 외의 경우 false를 리턴한다. 만약 false를 리턴한 경우 아직 홀펀칭되지 않은 peer인 경우에는 0.3~1초 간격으로 이 메서드를 지속적으로 호출하다 보면 true를 리턴할 때가 있다. 왜냐하면 홀펀칭이 성사되는 시간이 항상 다르기 때문이다.
virtual void Proud::CNetClient::GetGroupMembers ( HostID  groupHostID,
HostIDArray output 
)
pure virtual

이 client가 참여하고 있는 P2P group 중 하나인 groupHostID에 참여하고 있는 다른 peer들의 HostID list를 얻는다.

virtual int64_t Proud::CNetClient::GetIndirectServerTimeMs ( HostID  peerHostID)
pure virtual

다른 peer에서 가지고 있을 서버 시간을 구한다.

virtual int Proud::CNetClient::GetInternalVersion ( )
pure virtual

엔진 프로토콜 버전을 얻는다. 이 값이 클라이언트에서 얻는 엔진 프로토콜 버전과 다르면 접속이 불허된다.

virtual int Proud::CNetClient::GetLastReliablePingMs ( HostID  remoteHostID,
ErrorType error = NULL 
)
pure virtual

Remote peer의 마지막 레이턴시를 얻는다. GetLastUnreliablePing값은 Unreliable로 핑값을 구하는 반면 해당함수는 ReliableUdp로 측정한다.

매개변수
remoteHostID찾으려는 remote peer의 HostID. HostID_Server를 지정하면 서버와의 레이턴시를 얻는다.
error에러 여부를 리턴한다. 정상적인 경우 ErrorType_Ok, Ping을 얻지 못한 경우 ErrorType_ValueNotExist가 저장된다.
반환값
ping time을 밀리초단위로 리턴한다. 단 없으면 -1을 리턴한다.
double Proud::CNetClient::GetLastReliablePingSec ( HostID  remoteHostID,
ErrorType error = NULL 
)
inline

Remote peer의 마지막 레이턴시를 얻는다. GetLastUnreliablePing값은 Unreliable로 핑값을 구하는 반면 해당함수는 ReliableUdp로 측정한다.

매개변수
remoteHostID찾으려는 remote peer의 HostID. HostID_Server를 지정하면 서버와의 레이턴시를 얻는다.
error에러 여부를 리턴한다. 정상적인 경우 ErrorType_Ok, Ping을 얻지 못한 경우 ErrorType_ValueNotExist가 저장된다.
반환값
ping time을 초단위로 리턴한다. 단 없으면 -1을 리턴한다.
virtual int Proud::CNetClient::GetLastUnreliablePingMs ( HostID  remoteHostID,
ErrorType error = NULL 
)
pure virtual

Remote peer의 마지막 레이턴시를 얻는다.

매개변수
remoteHostID찾으려는 remote peer의 HostID. HostID_Server를 지정하면 서버와의 레이턴시를 얻는다.
error에러 여부를 리턴한다. 정상적인 경우 ErrorType_Ok, Ping을 얻지 못한 경우 ErrorType_ValueNotExist가 저장된다.
반환값
ping time을 밀리초단위로 리턴한다. 단 없으면 -1을 리턴한다.
double Proud::CNetClient::GetLastUnreliablePingSec ( HostID  remoteHostID,
ErrorType error = NULL 
)
inline

Remote peer의 마지막 레이턴시를 얻는다.

매개변수
remoteHostID찾으려는 remote peer의 HostID. HostID_Server를 지정하면 서버와의 레이턴시를 얻는다.
error에러 여부를 리턴한다. 정상적인 경우 ErrorType_Ok, Ping을 얻지 못한 경우 ErrorType_ValueNotExist가 저장된다.
반환값
ping time을 초단위로 리턴한다. 단 없으면 -1을 리턴한다.
virtual HostID Proud::CNetClient::GetLocalHostID ( )
pure virtual

이 호스트의 local HostID를 구한다. HostID_None이면 서버에 연결 안됐다는 뜻.

virtual void Proud::CNetClient::GetLocalJoinedP2PGroups ( HostIDArray output)
pure virtual

이 호스트가 가입한 모든 P2P 그룹 리스트를 얻는다.

virtual AddrPort Proud::CNetClient::GetLocalUdpSocketAddr ( HostID  remotePeerID)
pure virtual

이 호스트가 타 Peer와의 통신을 위해 내부적으로 갖고 있는 UDP socket의 로컬 주소를 얻는다.

매개변수
remotePeerID이 호스트와 P2P 통신을 하고 있는 타 Peer의 HostID.
반환값
CNetClient 내부에서 보유하고 있는 UDP socket의 포트번호 또는 (주소,포트번호). 사용자는 여기서 포트 번호를 가져다 쓰면 된다.
  • P2P 그룹에 상대측 peer가 들어온지 얼마 안된 경우 이 값은 AddrPort.Unassigned일 수 있다. 왜냐하면 ProudNet은 성능 향상을 위해 UDP socket을 즉시 만들지 않기 때문이다. 따라서 이러한 경우 잠시 뒤에 다시 이 메서드를 호출해서 얻을 수 있다.
virtual int Proud::CNetClient::GetMessageMaxLength ( )
pure virtual

주고받을 수 있는 RMI 혹은 사용자 정의 메시지의 최대 크기다.

virtual String Proud::CNetClient::GetNatDeviceName ( )
pure virtual

이 클라이언트가 속한 네트워크에 작동중인 인터넷 공유기 장치(NAT device)의 이름을 얻는다.

virtual void Proud::CNetClient::GetNetWorkerThreadInfo ( CFastArray< CThreadInfo > &  output)
pure virtual

네트워킹 스레드의 정보를 얻습니다. ProudNet은 스레드 풀(Thread pool) 과 별개로 네트워크 I/O처리를 담당하는 스레드가 내장되어 있습니다. 이것의 정보를 얻습니다.

매개변수
output여기에 정보가 채워집니다.
virtual int64_t Proud::CNetClient::GetP2PServerTimeMs ( HostID  groupHostID)
pure virtual

P2P group의 서버 시간을 얻는다. 이는 groupHostID가 가리키는 P2P group의 모든 GetIndirectServerTime()값의 평균이다.

virtual bool Proud::CNetClient::GetPeerInfo ( HostID  peerHostID,
CNetPeerInfo output 
)
pure virtual

이 객체에 연결된 peer 1개의 정보를 얻는다.

매개변수
peerHostID찾으려는 peer의 HostID
output찾은 peer의 정보. 못 찾으면 아무것도 채워지지 않는다.
반환값
true이면 찾았다는 뜻
virtual bool Proud::CNetClient::GetPeerReliableUdpStats ( HostID  peerID,
ReliableUdpHostStats output 
)
pure virtual

P2P간의 Reliable 메시징 시스템의 작동 통계를 얻는다.

  • 성능 측정이나 디버깅 등을 위해 사용된다.
virtual AddrPort Proud::CNetClient::GetPublicAddress ( )
pure virtual

서버에서 인식된, 이 클라이언트의 네트워크 주소를 얻는다. 즉, 즉 공인 인터넷 주소(external addr)이다.

  • 서버와 연결되어 있을때만 유효한 값을 리턴한다.
virtual int Proud::CNetClient::GetRecentReliablePingMs ( HostID  remoteHostID,
ErrorType error = NULL 
)
pure virtual

Remote peer 의 최근 레이턴시를 얻는다. GetRecentUnreliablePing 값은 Unreliable로 핑값을 구하는 반면 해당함수는 ReliableUdp 로 측정한다.

매개변수
remoteHostID찾으려는 remote peer의 HostID. HostID_Server를 지정하면 서버와의 레이턴시를 얻는다.
error에러 여부를 리턴한다. 정상적인 경우 ErrorType_Ok, Ping을 얻지 못한 경우 ErrorType_ValueNotExist가 저장된다.
반환값
ping time을 밀리초단위로 리턴한다. 단 없으면 -1을 리턴한다.
double Proud::CNetClient::GetRecentReliablePingSec ( HostID  remoteHostID,
ErrorType error = NULL 
)
inline

Remote peer 의 최근 레이턴시를 얻는다. GetRecentUnreliablePing 값은 Unreliable로 핑값을 구하는 반면 해당함수는 ReliableUdp 로 측정한다.

매개변수
remoteHostID찾으려는 remote peer의 HostID. HostID_Server를 지정하면 서버와의 레이턴시를 얻는다.
error에러 여부를 리턴한다. 정상적인 경우 ErrorType_Ok, Ping을 얻지 못한 경우 ErrorType_ValueNotExist가 저장된다.
반환값
ping time을 초단위로 리턴한다. 단 없으면 -1을 리턴한다.
virtual int Proud::CNetClient::GetRecentUnreliablePingMs ( HostID  remoteHostID,
ErrorType error = NULL 
)
pure virtual

Remote peer의 최근 레이턴시를 얻는다.

매개변수
remoteHostID찾으려는 remote peer의 HostID. HostID_Server를 지정하면 서버와의 레이턴시를 얻는다.
error에러 여부를 리턴한다. 정상적인 경우 ErrorType_Ok, Ping을 얻지 못한 경우 ErrorType_ValueNotExist가 저장된다.
반환값
ping time을 밀리초단위로 리턴한다. 단 없으면 -1을 리턴한다.
double Proud::CNetClient::GetRecentUnreliablePingSec ( HostID  remoteHostID,
ErrorType error = NULL 
)
inline

Remote peer의 최근 레이턴시를 얻는다.

매개변수
remoteHostID찾으려는 remote peer의 HostID. HostID_Server를 지정하면 서버와의 레이턴시를 얻는다. P2P 그룹 의 HostID를 넣으면 P2P 그룹 내 모든 멤버들의 평균 레이턴시를 얻는다.
error에러 여부를 리턴한다. 정상적인 경우 ErrorType_Ok, Ping을 얻지 못한 경우 ErrorType_ValueNotExist가 저장된다.
반환값
ping time을 초단위로 리턴한다. 단 없으면 -1을 리턴한다.
virtual AddrPort Proud::CNetClient::GetServerAddrPort ( )
pure virtual

연결된 서버의 주소를 구한다.

virtual ConnectionState Proud::CNetClient::GetServerConnectionState ( CServerConnectionState output)
pure virtual

서버와의 소켓 연결 상태를 리턴합니다.

  • 소켓의 연결 상태만 리턴합니다. 완전히 연결되었는지는 OnJoinServerComplete로 콜백됩니다.
    매개변수
    output서버와의 연결 상태가 채워지는 공간
    반환값
    서버와의 연결 상태
virtual int64_t Proud::CNetClient::GetServerTimeDiffMs ( )
pure virtual

클라이언트와 서버와의 시간 차를 구한다.

virtual int64_t Proud::CNetClient::GetServerTimeMs ( )
pure virtual

서버의 현재 시간을 구한다. (초 단위) 이 값은 일정 시간마다 레이턴시도 고려되어 계산되는 서버의 시간이다.

virtual bool Proud::CNetClient::GetSocketInfo ( HostID  remoteHostID,
CSocketInfo output 
)
pure virtual

ProudNet에 의해 만들어진 socket handle 들을 얻습니다. 이 기능은 클라이언트 보안 소프트웨어(가령 nProtect나 Ahnlab Hack Shield 등)에서 필요로 할 경우 유용합니다. 이 메서드를 통해 얻은 socket handle은 정보 획득 용도로만 사용하시고, I/O 처리를 수행하는 것은 금지합니다. 부작용이 있을 수 있기 때문입니다.

매개변수
remoteHostID소켓 정보를 얻을 peer의 HostID입니다. HostID_Server일 경우 서버와 연결된 소켓 정보를 얻습니다.
output여기에 정보가 채워집니다.
반환값
remoteHostID 값이 유효한 경우 true입니다.
virtual void Proud::CNetClient::GetStats ( CNetClientStats outVal)
pure virtual

시작 이래 수집된 처리량 통계를 얻는다.

virtual ErrorType Proud::CNetClient::GetUnreliableMessagingLossRatioPercent ( HostID  remotePeerID,
int *  outputPercent 
)
pure virtual

일반적인 온라인 게임에서는 unreliable 메시징이 전체 트래픽의 대부분을 차이지함에 따라 기존 unreliable 메시징 기능에 트래픽 로스율을 얻는 기능을 추가합니다. 패킷 로스율 측정기

매개변수
remoteHostID어느 remote 와의 통신에 대한 로스율을 얻을 걷인지. 자기 자신 peer, server 뭐든지 입력 가능합니다. 자기 자신이면 0% 입니다
outputPercent패킷 로스율을 단위로 채워짐(즉 0~100)
virtual void Proud::CNetClient::GetUserWorkerThreadInfo ( CFastArray< CThreadInfo > &  output)
pure virtual

스레드 풀(Thread pool) 의 각 스레드의 정보를 얻습니다.

매개변수
output여기에 정보가 채워집니다.
bool Proud::CNetClient::HasServerConnection ( )
inline

서버와의 소켓 연결 여부를 리턴합니다.

  • 서버와 소켓이 연결 되었는지의 여부만 리턴합니다.
virtual bool Proud::CNetClient::InvalidateUdpSocket ( HostID  peerID,
CDirectP2PInfo outDirectP2PInfo 
)
pure virtual

내부적으로 갖고 있는 UDP 소켓을 닫아버리고 서버 및 P2P 통신을 bypass 상태로 강제 전환한다.

  • ProudNet을 쓰지 않고 ProudNet의 홀펀칭 정보를 토대로 별도 UDP 소켓으로 통신하기 에서 사용된다.
  • CNetClient는 P2P 통신을 하고 있는 Peer의 갯수만큼의 UDP 소켓을 갖고 있으며 각각의 UDP 소켓은 서로 다른 Peer와의 통신을 전담하고 있다. 이 메서드는 1개 Peer와의 통신만을 bypass 상태로 강제 전환한다.
  • 이 메서드 호출 후 상대방도 direct P2P를 쓸 수 없게 되므로 상대방도 본 메서드를 호출해야 할 수도 있다.
  • direct P2P가 이미 아닌 경우에도 이 메서드는 과거 홀펀칭되었던 정보를 채워준다.
매개변수
peerID강제 bypass할 상대측 peer의 HostID
outDirectP2PInfo강제 bypass된 peer와 이 CNetClient가 P2P 통신을 하기 위해 CNetClient가 내부적으로 갖고 있던 홀펀칭 정보가 채워질 곳.
반환값
상대 피어가 존재하며 상대 피어와의 홀펀칭이 된 적이 있었거나 direct P2P를 유지하고 있었다면 true를 리턴한다.
virtual bool Proud::CNetClient::IsLocalHostBehindNat ( bool &  output)
pure virtual

이 클라이언트가 공유기 뒤에 있는 클라이언트인가?

반환값
판단할 수 없으면 false 리턴. 이때 output은 안채워진다.
매개변수
output공유기 뒤에 있는 클라이언트이면 true가 채워진다.
virtual bool Proud::CNetClient::RestoreUdpSocket ( HostID  peerID)
pure virtual

InvalidateUdpSocket으로 제거된 UDP socket을 다시 만든다. 그리고 해당 상대측 peer와의 UDP 홀펀칭을 재개한다.

매개변수
peerID일전에 InvalidateUdpSocket이 시행되었던 피어의 ID.
반환값
성공적으로 완료시 true. 해당 상대측 peer가 없으면 false.
virtual bool Proud::CNetClient::SendEmergencyLogData ( String  serverAddr,
uint16_t  serverPort 
)
pure virtual

긴급 로그를 긴급 로그 수집 서버(CEmergencyLogServer)로 전송합니다. CEmergencyLogServer를 먼저 실행하셔야 해당기능을 쓸수 있습니다.

  • CStartServerParameter.m_clientEmergencyLogMaxLineCount의 갯수를 지정하셔야 합니다.
  • 의도되지 않게 서버와의 연결이 끊긴 경우, 해당함수를 호출하면 클라의 최근 상황과 현재 상태로그를 CEmergencyLogServer로 전송합니다.
  • logClient는 내부에서 새로운 thread를 생성하여 로그 클라이언트를 만들고 바로 서버로 로그가 전송됩니다. 따라서 이 메서드 call 후 바로 메인 스레드를 종료하지 말아야 합니다.
    매개변수
    serverAddr로그서버 주소입니다.
    serverPort로그서버의 포트번호입니다.
    반환값
    성공, 실패 여부입니다. m_clientEmergencyLogMaxLineCount 값이 0인 경우가 이에해당됩니다.
virtual bool Proud::CNetClient::SendUserMessage ( const HostID remotes,
int  remoteCount,
const RmiContext rmiContext,
uint8_t *  payload,
int  payloadLength 
)
pure virtual

사용자 정의 메시지를 전송합니다. 자세한 것은 RMI를 전혀 안쓰고 사용자 정의 메시지를 주고 받기 를 참고하십시오.

매개변수
remotes수신자 배열입니다. RMI와 마찬가지로, 클라이언트, 서버(HostID_Server), P2P 그룹 등을 넣을 수 있습니다.
remoteCount수신자 배열 크기
rmiContext송신 부가정보. 자세한 것은 ProudNet의 프로토콜 종류 를 참고하십시오.
payload보낼 메시지 데이터
payloadLength보낼 메시지 데이터의 길이. 바이트 단위입니다.
bool Proud::CNetClient::SendUserMessage ( HostID  remote,
const RmiContext rmiContext,
uint8_t *  payload,
int  payloadLength 
)
inline

사용자 정의 메시지를 전송합니다. 자세한 것은 RMI를 전혀 안쓰고 사용자 정의 메시지를 주고 받기 를 참고하십시오.

매개변수
remote수신자
rmiContext송신 부가정보. 자세한 것은 ProudNet의 프로토콜 종류 를 참고하십시오.
payload보낼 메시지 데이터
payloadLength보낼 메시지 데이터의 길이. 바이트 단위입니다.
virtual void Proud::CNetClient::SetApplicationHint ( const CApplicationHint hint)
pure virtual

CNetClient을 사용하는 응용프로그램 상태를 CNetClient에게 전달합니다. CNetClient를 렌더링 루프와 다른 스레드에서 실행시키는 게임의 경우 프레임 레이트를 CNetClient가 직접 산출할 수 없어서 사용자가 굳이 측정해야 합니다.

virtual ErrorType Proud::CNetClient::SetCoalesceIntervalMs ( HostID  remote,
int  intervalMs 
)
pure virtual

Coalesce interval을 수동으로 설정합니다. ProudNet 자체에서 설정되는 네트워크 품질 기반 데이터 뭉쳐 보내는 기능이 원하지 않는 품질이 나올때 사용하십시오. 적절하지 않은 값을 입력할 경우 의도하지 않은 결과가 초래될 수 있으니 주의하십시오.

virtual ErrorType Proud::CNetClient::SetCoalesceIntervalToAuto ( HostID  remote)
pure virtual

Coalesce interval을 자동으로 설정합니다. 이 설정은 디폴트입니다.

virtual void Proud::CNetClient::SetDefaultTimeoutTimeMs ( int  newValInMs)
pure virtual

너무 오랫동안 서버와 통신하지 못하면 연결을 해제하기 위한 타임 아웃 임계값(밀리초단위)를 지정한다.

  • CNetClient.Connect 호출 전에만 사용할 수 있다. 그 이후부터 호출할 경우 무시된다.
  • 무한으로 잡는 것은 추천하지 않는다. 비정상 연결 해제시 무한히 남는 연결로 자리잡기 때문이다. 그러느니 차라리 1시간을 거는 것이 낫다.
  • OnJoinServerComplete가 뜬 이후에는 Server에서 셋팅한값이 대신 저장된다.
  • 클라이언트에서 이값을 따로 지정할수 있게 한 이유는 서버에서 셋팅한 값이 오기전에 클라이언트에서 자체적으로 default값인 10초가 되면 끊어버리기때문이다.
  • 기본값은 ProudNetConfig.DefaultNoPingTimeoutTime이다.
  • 참고: 디버거에 의해 일시정지하면 서버와의 연결이 끊어지는 문제 해결법
virtual void Proud::CNetClient::SetEventSink ( INetClientEvent eventSink)
pure virtual

이벤트를 받을 수 있는 객체를 설정한다.

  • 하나만 설정 가능하다.
  • 이 메서드는 클라이언트가 서버에 연결을 시도하기 전에만 호출할 수 있다. 안그러면 exception이 throw된다.
virtual bool Proud::CNetClient::SetHostTag ( HostID  hostID,
void *  hostTag 
)
pure virtual

이 호스트에 연결된 다른 호스트(서버의 경우 클라이언트들, 클라이언트의 경우 피어들)들 각각에의 tag를 지정합니다. 각 호스트에 대한 사용자 정의 데이터(Tag) 기능입니다.

  • 자기 자신(서버 혹은 클라이언트)에 대한 tag도 지정할 수 있습니다.