ProudNet: 서버와 네트워크

이 모듈에 대한 설명은 ProudNet: 서버와 네트워크 를 참고하십시오. 더 자세히 ...

클래스

class  Proud::CRemoteOfflineEventArgs
 
class  Proud::CRemoteOnlineEventArgs
 
struct  Proud::AddrPort
 
struct  Proud::NamedAddrPort
 
class  Proud::CNetUtil
 
class  Proud::CNetConnectionParam
 
class  Proud::ErrorInfo
 
class  Proud::HostIDArray
 
class  Proud::HostIDSet
 
class  Proud::INetClientEvent
 
class  Proud::CUserWorkerThreadCallbackContext
 
class  Proud::INetCoreEvent
 
class  Proud::INetServerEvent
 
class  Proud::IRmiHost
 ProudNet RMI가 참조하는 네트워크 호스트 인터페이스입니다. 유저는 이 클래스를 직접 사용할 필요가 없습니다. 더 자세히 ...
 
class  Proud::CClientWorkerInfo
 clientWorker의 정보를 담는 구조체. 더 자세히 ...
 
class  Proud::CSocketInfo
 socket의 정보를 담는 구조체입니다. 더 자세히 ...
 
class  Proud::CThreadInfo
 1개의 스레드에 대한 정보가 담겨져 있는 구조체. 더 자세히 ...
 
class  Proud::CApplicationHint
 사용자 프로그램에서 엔진에 전달하는 입력 파라메터 더 자세히 ...
 
class  Proud::ReliableUdpHostStats
 통계 정보. 디버깅이나 성능 측정을 위함 더 자세히 ...
 
class  Proud::CTestStats
 
class  Proud::CTestStats2
 
class  Proud::CDisconnectArgs
 
class  Proud::IRmiProxy
 
class  Proud::IRmiStub
 
class  Proud::CMessage
 
class  Proud::CSmallStackAllocMessage
 
class  Proud::MessageSummary
 
class  Proud::AfterRmiSummary
 
class  Proud::CNetClientInfo
 
class  Proud::CFrameMoveResult
 클라이언트 FrameMove 처리 결과 더 자세히 ...
 
class  Proud::CServerConnectionState
 서버와의 연결 상태를 얻은 결과 더 자세히 ...
 
class  Proud::CDirectP2PInfo
 ProudNet 내부에서 Direct P2P 통신을 위해 보유하고 있는 주소 등의 정보입니다. CNetClient.GetDirectP2PInfo 등에서 사용됩니다. 더 자세히 ...
 
class  Proud::CNetClient
 네트워크 클라이언트 더 자세히 ...
 
class  Proud::CNetConfig
 
class  Proud::CNetPeerInfo
 
struct  Proud::SuperPeerRating
 GetSuitableSuperPeerRankListInGroup에서 채워지는 배열의 각 원소입니다. 더 자세히 ...
 
class  Proud::CSuperPeerSelectionPolicy
 수퍼 피어 선정 정책 더 자세히 ...
 
class  Proud::CP2PConnectionStats
 P2P 연결에 대한 통계입니다. 더 자세히 ...
 
class  Proud::CP2PPairConnectionStats
 RemoteA 와 RemoteB 사이의 Udp 메시징 시도와 성공갯수입니다. 더 자세히 ...
 
class  Proud::CNetServer
 게임용 네트워크 서버 더 자세히 ...
 
class  Proud::CStartServerParameter
 
class  Proud::CServiceParameter
 
class  Proud::CNTServiceStartParameter
 
class  Proud::CP2PGroup
 
class  Proud::CP2PGroups
 
class  Proud::CP2PGroupOption
 P2P 그룹 한 개의 사용자 지정 설정입니다. 필요한 경우가 아닌 이상 이 객체를 사용하실 필요는 없습니다. 더 자세히 ...
 
class  Proud::RmiContext
 
class  Proud::OverlappedResult
 
class  Proud::SocketSelectContext
 
class  Proud::ISocketDelegate
 
class  Proud::CSocket
 
class  Proud::CStartServerParameterBase
 
class  Proud::IThreadPoolEvent
 
class  Proud::CThreadPool
 

타입정의

typedef uint16_t Proud::RmiID
 
typedef RefCount< ErrorInfo > Proud::ErrorInfoPtr
 
typedef RefCount< CP2PGroup > Proud::CP2PGroupPtr
 

열거형 타입

enum  Proud::SocketErrorCode {
  SocketErrorCode_Ok = 0, SocketErrorCode_Error = SOCKET_ERROR, SocketErrorCode_Timeout = WSAETIMEDOUT, SocketErrorCode_ConnectionRefused = WSAECONNREFUSED,
  SocketErrorCode_ConnectResetByRemote = WSAECONNRESET, SocketErrorCode_AddressNotAvailable = WSAEADDRNOTAVAIL, SocketErrorCode_NotSocket = WSAENOTSOCK, SocketErrorCode_ShutdownByRemote = WSAEDISCON,
  SocketErrorCode_WouldBlock = WSAEWOULDBLOCK, SocketErrorCode_IoPending = WSA_IO_PENDING, SocketErrorCode_AccessError = WSAEACCES, SocketErrorCode_OperationAborted = ERROR_OPERATION_ABORTED,
  SocketErrorCode_InvalidArgument = WSAEINVAL, SocketErrorCode_Intr = WSAEINTR, SocketErrorCode_InProgress = WSAEINPROGRESS, SocketErrorCode_AlreadyIsConnected = WSAEISCONN,
  SocketErrorCode_AlreadyAttempting = WSAEALREADY, SocketErrorCode_Cancelled = WSAECANCELLED, SocketErrorCode_NetUnreachable = WSAENETUNREACH
}
 
enum  ShutdownFlag { ShutdownFlag_Send = SD_SEND, ShutdownFlag_Receive = SD_RECEIVE, ShutdownFlag_Both = SD_BOTH }
 
enum  Proud::CompressMode { Proud::CM_None, Proud::CM_Zip }
 
enum  Proud::EncryptMode { Proud::EM_None, Proud::EM_Secure, Proud::EM_Fast, EM_LAST }
 
enum  Proud::MessagePriority {
  MessagePriority_Ring0 = 0, MessagePriority_Ring1, Proud::MessagePriority_High, Proud::MessagePriority_Medium,
  Proud::MessagePriority_Low, MessagePriority_Ring99, MessagePriority_LAST
}
 
enum  MessageReliability { MessageReliability_Unreliable = 0, MessageReliability_Reliable, MessageReliability_LAST }
 
enum  Proud::ErrorType {
  Proud::ErrorType_Ok = 0, Proud::ErrorType_Unexpected, Proud::ErrorType_AlreadyConnected, Proud::ErrorType_TCPConnectFailure,
  Proud::ErrorType_InvalidSessionKey, Proud::ErrorType_EncryptFail, Proud::ErrorType_DecryptFail, Proud::ErrorType_ConnectServerTimeout,
  Proud::ErrorType_ProtocolVersionMismatch, Proud::ErrorType_InvalidLicense, Proud::ErrorType_NotifyServerDeniedConnection, Proud::ErrorType_Reserved01,
  Proud::ErrorType_DisconnectFromRemote, Proud::ErrorType_DisconnectFromLocal, Proud::ErrorType_Reserved02, Proud::ErrorType_UnknownAddrPort,
  Proud::ErrorType_Reserved03, Proud::ErrorType_ServerPortListenFailure, Proud::ErrorType_AlreadyExists, Proud::ErrorType_PermissionDenied,
  Proud::ErrorType_BadSessionGuid, Proud::ErrorType_InvalidCredential, Proud::ErrorType_InvalidHeroName, Proud::ErrorType_Reserved06,
  Proud::ErrorType_Reserved07, Proud::ErrorType_Reserved08, Proud::ErrorType_UnitTestFailed, Proud::ErrorType_P2PUdpFailed,
  Proud::ErrorType_ReliableUdpFailed, Proud::ErrorType_ServerUdpFailed, Proud::ErrorType_NoP2PGroupRelation, Proud::ErrorType_ExceptionFromUserFunction,
  Proud::ErrorType_UserRequested, Proud::ErrorType_InvalidPacketFormat, Proud::ErrorType_TooLargeMessageDetected, Proud::ErrorType_Reserved09,
  Proud::ErrorType_ValueNotExist, Proud::ErrorType_TimeOut, Proud::ErrorType_LoadedDataNotFound, Proud::ErrorType_SendQueueIsHeavy,
  Proud::ErrorType_TooSlowHeartbeatWarning, Proud::ErrorType_CompressFail, Proud::ErrorType_LocalSocketCreationFailed, Proud::Error_NoneAvailableInPortPool,
  Proud::ErrorType_InvalidPortPool, Proud::ErrorType_InvalidHostID, Proud::ErrorType_MessageOverload, Proud::ErrorType_DatabaseAccessFailed,
  Proud::ErrorType_OutOfMemory, Proud::ErrorType_AutoConnectionRecoveryFailed, Proud::ErrorType_NotImplementedRmi
}
 
enum  Proud::HostID { Proud::HostID_None = 0, Proud::HostID_Server = 1, Proud::HostID_Last = 2 }
 
enum  _RmiID { RmiID_None = 0, RmiID_Last = 65535 }
 
enum  Proud::LogCategory { Proud::LogCategory_System, Proud::LogCategory_Tcp, Proud::LogCategory_Udp, Proud::LogCategory_P2P }
 
enum  Proud::HackType { Proud::HackType_None, Proud::HackType_SpeedHack, Proud::HackType_PacketRig }
 
enum  Proud::ConnectionState { Proud::ConnectionState_Disconnected, Proud::ConnectionState_Connecting, Proud::ConnectionState_Connected, Proud::ConnectionState_Disconnecting }
 
enum  Proud::FallbackMethod { Proud::FallbackMethod_None, Proud::FallbackMethod_PeersUdpToTcp, Proud::FallbackMethod_ServerUdpToTcp, Proud::FallbackMethod_CloseUdpSocket }
 
enum  Proud::DirectP2PStartCondition { Proud::DirectP2PStartCondition_Jit, Proud::DirectP2PStartCondition_Always, DirectP2PStartCondition_LAST }
 
enum  Proud::MiniDumpAction { Proud::MiniDumpAction_None = 0, Proud::MiniDumpAction_DoNothing, Proud::MiniDumpAction_AlarmCrash }
 
enum  Proud::ServerUdpAssignMode { Proud::ServerUdpAssignMode_None, Proud::ServerUdpAssignMode_PerClient, Proud::ServerUdpAssignMode_Static }
 
enum  SocketType { SocketType_Tcp, SocketType_Udp, SocketType_Raw }
 

함수

void Proud::AppendTextOut (String &a, AddrPort &b)
 
void Proud::AppendTextOut (String &a, NamedAddrPort &b)
 
PROUD_API const PNTCHAR * Proud::ToString (LogCategory logCategory)
 
PROUD_API const PNTCHAR * Proud::ToString (ConnectionState val)
 
PROUD_API void Proud::ThrowExceptionOnReadString (int length)
 
PROUD_API void Proud::ThrowExceptionOnReadArray (int64_t length)
 
CMessage & Proud::operator<< (CMessage &a, const StringA &str)
 
CMessage & Proud::operator>> (CMessage &a, StringA &str)
 
CMessage & Proud::operator<< (CMessage &a, const StringW &str)
 
CMessage & Proud::operator>> (CMessage &a, StringW &str)
 
CMessage & Proud::operator<< (CMessage &a, const std::string &str)
 
CMessage & Proud::operator>> (CMessage &a, std::string &str)
 
CMessage & Proud::operator<< (CMessage &a, const std::wstring &str)
 
CMessage & Proud::operator>> (CMessage &a, std::wstring &str)
 
CMessage & Proud::operator<< (CMessage &a, bool b)
 
CMessage & Proud::operator<< (CMessage &a, int8_t b)
 
CMessage & Proud::operator<< (CMessage &a, uint8_t b)
 
CMessage & Proud::operator<< (CMessage &a, int16_t b)
 
CMessage & Proud::operator<< (CMessage &a, uint16_t b)
 
CMessage & Proud::operator<< (CMessage &a, int32_t b)
 
CMessage & Proud::operator<< (CMessage &a, uint32_t b)
 
CMessage & Proud::operator<< (CMessage &a, uint64_t b)
 
CMessage & Proud::operator<< (CMessage &a, int64_t b)
 
CMessage & Proud::operator<< (CMessage &a, float b)
 
CMessage & Proud::operator<< (CMessage &a, double b)
 
CMessage & Proud::operator<< (CMessage &a, HostID b)
 
CMessage & Proud::operator>> (CMessage &a, bool &b)
 
CMessage & Proud::operator>> (CMessage &a, int8_t &b)
 
CMessage & Proud::operator>> (CMessage &a, uint8_t &b)
 
CMessage & Proud::operator>> (CMessage &a, int16_t &b)
 
CMessage & Proud::operator>> (CMessage &a, uint16_t &b)
 
CMessage & Proud::operator>> (CMessage &a, int32_t &b)
 
CMessage & Proud::operator>> (CMessage &a, uint32_t &b)
 
CMessage & Proud::operator>> (CMessage &a, uint64_t &b)
 
CMessage & Proud::operator>> (CMessage &a, int64_t &b)
 
CMessage & Proud::operator>> (CMessage &a, float &b)
 
CMessage & Proud::operator>> (CMessage &a, double &b)
 
CMessage & Proud::operator>> (CMessage &a, HostID &b)
 
CMessage & Proud::operator>> (CMessage &a, AddrPort &b)
 
CMessage & Proud::operator<< (CMessage &a, AddrPort b)
 
CMessage & Proud::operator>> (CMessage &a, ByteArray &b)
 
CMessage & Proud::operator<< (CMessage &a, const ByteArray &b)
 
CMessage & Proud::operator>> (CMessage &a,::timespec &tc)
 
CMessage & Proud::operator<< (CMessage &a, const ::timespec &tc)
 
template<typename elem , bool elem_in_ref, bool RAWTYPE, typename INDEXTYPE >
CMessage & Proud::operator>> (CMessage &a, CFastArray< elem, elem_in_ref, RAWTYPE, INDEXTYPE > &b)
 
template<typename elem , bool elem_in_ref, bool RAWTYPE, typename INDEXTYPE >
CMessage & Proud::operator<< (CMessage &a, const CFastArray< elem, elem_in_ref, RAWTYPE, INDEXTYPE > &b)
 
CMessage & Proud::operator<< (CMessage &a, const NamedAddrPort &b)
 
CMessage & Proud::operator>> (CMessage &a, NamedAddrPort &b)
 
PROUD_API void Proud::AppendTextOut (String &a, const bool &b)
 
PROUD_API void Proud::AppendTextOut (String &a, const int8_t &b)
 
PROUD_API void Proud::AppendTextOut (String &a, const uint8_t &b)
 
PROUD_API void Proud::AppendTextOut (String &a, const int16_t &b)
 
PROUD_API void Proud::AppendTextOut (String &a, const uint16_t &b)
 
PROUD_API void Proud::AppendTextOut (String &a, const int32_t &b)
 
PROUD_API void Proud::AppendTextOut (String &a, const uint32_t &b)
 
PROUD_API void Proud::AppendTextOut (String &a, const int64_t &b)
 
PROUD_API void Proud::AppendTextOut (String &a, const uint64_t &b)
 
PROUD_API void Proud::AppendTextOut (String &a, const float &b)
 
PROUD_API void Proud::AppendTextOut (String &a, const double &b)
 
PROUD_API void Proud::AppendTextOut (String &a, const char *&b)
 
PROUD_API void Proud::AppendTextOut (String &a, const wchar_t *&b)
 
PROUD_API void Proud::AppendTextOut (String &a, const StringA &b)
 
PROUD_API void Proud::AppendTextOut (String &a, const StringW &b)
 
void Proud::AppendTextOut (String &a, const std::string &b)
 
void Proud::AppendTextOut (String &a, const std::wstring &b)
 
PROUD_API void Proud::AppendTextOut (String &a, const POINT &b)
 
template<typename elem >
void Proud::AppendTextOut (String &a, CFastArray< elem > &b)
 
PROUD_API void Proud::AppendTextOut (String &a, ByteArray &b)
 
PROUD_API void Proud::AppendTextOut (String &a, const ::timespec &b)
 
template<typename FloatType >
CMessage & Proud::operator>> (CMessage &a, Vector3T< FloatType > &b)
 
template<typename FloatType >
CMessage & Proud::operator<< (CMessage &a, const Vector3T< FloatType > &b)
 
void Proud::AppendTextOut (String &a, const FloatVector3 &b)
 
void Proud::AppendTextOut (String &a, const Vector3 &b)
 
template<typename K , typename V >
__forceinline CMessage & Proud::operator>> (CMessage &a, CFastMap< K, V > &b)
 
template<typename K , typename V >
__forceinline CMessage & Proud::operator<< (CMessage &a, const CFastMap< K, V > &b)
 
template<typename K , typename V >
__forceinline void Proud::AppendTextOut (String &a, const CFastMap< K, V > &b)
 
template<typename elem >
__forceinline CMessage & Proud::operator>> (CMessage &a, CFastList< elem > &b)
 
template<typename elem >
__forceinline CMessage & Proud::operator<< (CMessage &a, const CFastList< elem > &b)
 
template<typename elem >
__forceinline void Proud::AppendTextOut (String &a, const CFastList< elem > &b)
 
template<typename elem >
String Proud::TestMarshaler (const elem &testee)
 

변수

const int Proud::InvalidSocket = 0
 
StringA Proud::policyFileText
 
const PNTCHAR * Proud::ProxyBadSignatureErrorText
 
const PNTCHAR * Proud::DecryptFailedError
 

상세한 설명

이 모듈에 대한 설명은 ProudNet: 서버와 네트워크 를 참고하십시오.

타입정의 문서화

typedef RefCount<ErrorInfo> Proud::ErrorInfoPtr

에러 정보를 담는 객체의 스마트 포인터

  • ErrorInfoPtr 은 자주 생기는 객체도 아니므로 fast alloc을 안쓴다.

열거형 타입 문서화

압축 모드입니다.

열거형 멤버
CM_None 

압축을 하지 않습니다.

CM_Zip 

ZIP 알고리즘으로 압축을 합니다.

타 호스트와의 연결 상태

열거형 멤버
ConnectionState_Disconnected 

연결이 끊어진 상태

ConnectionState_Connecting 

연결 시도를 했지만 아직 결과를 알 수 없는 상태

ConnectionState_Connected 

연결 과정이 성공한 상태

ConnectionState_Disconnecting 

연결 해제 과정이 진행중인 상태

클라이언트간 직접 P2P 통신을 위한 홀펀칭을 시작하는 조건

열거형 멤버
DirectP2PStartCondition_Jit 

꼭 필요한 상황이 아닌 이상 홀펀칭을 하지 않는다. 웬만하면 이것을 쓰는 것이 좋다.

DirectP2PStartCondition_Always 

CNetServer.CreateP2PGroup 이나 CNetServer.JoinP2PGroup 등에 의해 클라이언트간 P2P 통신이 허용되는 순간에 무조건 홀펀칭 과정을 시작한다. 예를 들어 Super Peer(수퍼피어 혹은 호스트) 중심의 P2P 네트워킹 에서 수퍼 피어를 게임 플레이 도중 종종 바꿔야 한다면 이것이 필요할 수도 있을 것이다.

암호화 및 복호화 설정값입니다.

열거형 멤버
EM_None 

암호화를 안합니다.

EM_Secure 

RSA와 AES를 혼용한 암호화를 수행합니다. 로그온 등 보안성이 높은 메시지에 쓰십시오.

EM_Fast 

RSA와 Fast를 혼용한 암호화를 수행합니다. 캐릭터 이동 등 약간의 암호화는 필요하지만 성능 또한 고려해야 하는 상황에서 쓰십시오.

에러 타입 코드

열거형 멤버
ErrorType_Ok 

성공. 문제 없음.

ErrorType_Unexpected 

예외 상황 발생

ErrorType_AlreadyConnected 

이미 연결되어 있음

ErrorType_TCPConnectFailure 

TCP 연결 실패

ErrorType_InvalidSessionKey 

잘못된 대칭키

ErrorType_EncryptFail 

암호화가 실패했음

ErrorType_DecryptFail 

해커가 깨진 데이터를 전송했거나 복호화가 실패했음

ErrorType_ConnectServerTimeout 

서버 연결 과정이 너무 오래 걸려서 실패 처리됨

ErrorType_ProtocolVersionMismatch 

서버 연결을 위한 프로토콜 버전이 다름

ErrorType_InvalidLicense 

서버 쪽 인증에 문제가 있음.

ErrorType_NotifyServerDeniedConnection 

서버가 연결을 의도적으로 거부했음

ErrorType_Reserved01 

서버 연결 성공!

ErrorType_DisconnectFromRemote 

상대측 호스트에서 연결을 해제했음

ErrorType_DisconnectFromLocal 

이쪽 호스트에서 연결을 해제했음

ErrorType_Reserved02 

위험한 상황을 불러올 수 있는 인자가 있음

ErrorType_UnknownAddrPort 

알 수 없는 인터넷 주소

ErrorType_Reserved03 

서버 준비 부족

ErrorType_ServerPortListenFailure 

서버 소켓의 listen을 시작할 수 없습니다. TCP 또는 UDP 소켓이 이미 사용중인 포트인지 확인하십시오.

ErrorType_AlreadyExists 

이미 개체가 존재합니다.

ErrorType_PermissionDenied 

접근이 거부되었습니다.

ErrorType_BadSessionGuid 

잘못된 session Guid입니다.

ErrorType_InvalidCredential 

잘못된 credential입니다.

ErrorType_InvalidHeroName 

잘못된 hero name입니다.

ErrorType_Reserved06 

로딩 과정이 unlock 후 lock 한 후 꼬임이 발생했다

ErrorType_Reserved07 

출력 파라메터 AdjustedGamerIDNotFilled가 채워지지 않았습니다.

ErrorType_Reserved08 

플레이어 캐릭터가 존재하지 않습니다.

ErrorType_UnitTestFailed 

유닛 테스트 실패

ErrorType_P2PUdpFailed 

peer-to-peer UDP 통신이 막혔습니다.

ErrorType_ReliableUdpFailed 

P2P reliable UDP가 실패했습니다.

ErrorType_ServerUdpFailed 

클라이언트-서버 UDP 통신이 막혔습니다.

ErrorType_NoP2PGroupRelation 

더 이상 같이 소속된 P2P 그룹이 없습니다.

ErrorType_ExceptionFromUserFunction 

사용자 정의 함수(RMI 수신 루틴 혹은 이벤트 핸들러)에서 exception이 throw되었습니다.

ErrorType_UserRequested 

사용자의 요청에 의한 실패입니다.

ErrorType_InvalidPacketFormat 

잘못된 패킷 형식입니다. 상대측 호스트가 해킹되었거나 버그일 수 있습니다.

ErrorType_TooLargeMessageDetected 

너무 큰 크기의 메시징이 시도되었습니다. 기술지원부에 문의하십시오. 필요시 통신 메시지의 크기 제한 를 참고하십시오.

ErrorType_Reserved09 

Unreliable 메세지는 encrypt 할수 없습니다.

ErrorType_ValueNotExist 

존재하지 않는 값입니다.

ErrorType_TimeOut 

타임아웃 입니다.

ErrorType_LoadedDataNotFound 

로드된 데이터를 찾을수 없습니다.

ErrorType_SendQueueIsHeavy 

송신량 과다시 경고 발생 기능. 송신 queue가 지나치게 커졌습니다.

ErrorType_TooSlowHeartbeatWarning 

Heartbeat가 평균적으로 너무 느림

ErrorType_CompressFail 

메시지 압축이 실패 하였습니다.

ErrorType_LocalSocketCreationFailed 

클라이언트 소켓의 listen 혹은 UDP 준비를 할 수 없습니다. TCP 또는 UDP 소켓이 이미 사용중인 포트인지, 프로세스당 소켓 갯수 제한이 있는지 확인하십시오.

Error_NoneAvailableInPortPool 

Socket을 생성할 때 Port Pool 내 port number로의 bind가 실패했습니다. 대신 임의의 port number가 사용되었습니다. Port Pool의 갯수가 충분한지 확인하십시요.

ErrorType_InvalidPortPool 

Port pool 내 값들 중 하나 이상이 잘못되었습니다. 포트를 0(임의 포트 바인딩)으로 하거나 중복되지 않았는지 확인하십시요.

ErrorType_InvalidHostID 

유효하지 않은 HostID 값입니다.

ErrorType_MessageOverload 

사용자가 소화하는 메시지 처리 속도보다 내부적으로 쌓이는 메시지의 속도가 더 높습니다. 지나치게 너무 많은 메시지를 송신하려고 했는지, 혹은 사용자의 메시지 수신 함수가 지나치게 느리게 작동하고 있는지 확인하십시오.

ErrorType_DatabaseAccessFailed 

Accessing database failed. For example, query statement execution failed. You may see the details from comment variable.

ErrorType_OutOfMemory 

메모리가 부족합니다.

ErrorType_AutoConnectionRecoveryFailed 

서버와의 연결이 끊어져서 연결 복구 기능이 가동되었지만, 이것 마저도 실패했습니다.

ErrorType_NotImplementedRmi 

RMI 함수를 호출 했지만, 함수 구현부가 없습니다.

TCP fallback을 의도적으로 시행할 때의 방법

열거형 멤버
FallbackMethod_None 

Fallback을 안함. 즉 서버 및 peer와의 UDP 통신을 모두 사용함.

FallbackMethod_PeersUdpToTcp 

서버와의 UDP 통신은 유지하되 타 Peer들과의 UDP 통신만이 차단된 것으로 처리한다. 일시적 포트매핑 실패와 유사한 상황을 재현한다. 가장 강도가 낮다.

FallbackMethod_ServerUdpToTcp 

서버와의 UDP 통신을 차단된 것으로 처리한다. 일시적 포트매핑 실패와 유사한 상황을 재현한다. 아울러 Peer들과의 UDP 통신도 차단된다. 중간 강도다.

FallbackMethod_CloseUdpSocket 

클라이언트의 UDP 소켓을 아예 닫아버린다. 영구적인 UDP 복구를 못하게 한다. 가장 강도가 높다.

해킹의 종류

열거형 멤버
HackType_None 

해킹 아님

HackType_SpeedHack 

스피드핵

HackType_PacketRig 

패킷 조작

ProudNet 호스트 식별자

열거형 멤버
HostID_None 

없음

HostID_Server 

서버

HostID_Last 

(사용금지)

모듈 내에서 발생하는 로그의 범주 타입입니다.

열거형 멤버
LogCategory_System 

기본 시스템

LogCategory_Tcp 

TCP 통신 관련

LogCategory_Udp 

UDP 통신 관련

LogCategory_P2P 

P2P 통신 관련

메시지 송신 우선순위

열거형 멤버
MessagePriority_High 

높은 우선순위

MessagePriority_Medium 

보통 우선순위. 가장 많이 사용됨.

MessagePriority_Low 

낮은 우선순위

미니 덤프 타입

열거형 멤버
MiniDumpAction_None 

일반적인 프로그램의 경우.

MiniDumpAction_DoNothing 

유저 호출에 의해 미니 덤프 파일을 생성된 경우.

MiniDumpAction_AlarmCrash 

오류로 인하여 미니 덤프 파일이 생성된 경우.

서버가, 서버에 접속하는 클라이언트와 통신할 때 사용할 UDP 소켓을 배정하는 정책입니다. 자세한 사항은 서버의 UDP 포트 사용 방식 를 참고하십시오.

열거형 멤버
ServerUdpAssignMode_None 

지정안됨. 사용자는 이 값을 쓰지 마십시오.

ServerUdpAssignMode_PerClient 

접속이 들어오는 각 클라이언트에 대해서 서로 다른 UDP 포트를 사용합니다.

ServerUdpAssignMode_Static 

접속이 들어오는 모든 클라이언트는 미리 준비되어 있는 고정된 갯수의 UDP 포트를 재사용합니다. 이 설정을 사용할 경우 UDP의 특성상 서버와 통신을 하기 어려운 클라이언트들이 생길 수 있습니다.

소켓 에러 코드

함수 문서화

template<typename elem >
String Proud::TestMarshaler ( const elem &  testee)

사용자가 만든 marshaler 메서드가 정상적으로 작동하는지 테스트합니다. 디버깅 용도로 사용하세요.

매개변수
testee사용자가 만든 변수 타입의 객체입니다. 최대한 복잡하게 값을 넣어서 테스트하는 것을 권합니다. 이 객체 타입은 Equals() 메서드를 멤버로 갖고 있어야 합니다. Equals()메서드는 두 값을 비교해서 같으면 true를 리턴해야 합니다.
반환값
오류가 없으면 빈 문자열을, 있는 경우 오류 내용을 담아서 리턴합니다.

사용 예

MyType a;
a = ...; // 뭔가를 담는다.
if(!err.IsEmpty())
show_error(err);