JNetLibray
로딩중...
검색중...
일치하는것 없음
jnet 네임스페이스 참조

JNetCore/JNetServer/JNetOdbcServer/JNetClient class 더 자세히 ...

네임스페이스

namespace  jgroup
 

클래스

class  JNetClient
 클라이언트 기능이 구체화된 'JNetCore' 하위 클래스, 동일 LAN 구간 서버로의 연결 요청과 패킷 송수신(ConnectToServer, OnRecv, SendPacket) 추상화 더 자세히 ...
 
class  JNetCore
 클라이언트 TCP 세션의 생명 주기를 'JNetSession'을 통해 관리하며, 하위 클래스 객체의 세션 접근(송신, 수신 처리 및 연결 종료)에 대한 thread-safe 성을 보장함
등록된 세션의 소켓 장치를 IOCP 객체에 등록되면, 비동기 I/O 완료 처리를 IOCP 작업자 스레드를 통해 수행
클라이언트로부터의 패킷 수신 완료 및 연결 종료를 이벤트 함수(OnRecvCompletion, OnSessionLeave)를 통해 콜백하며, 패킷 송신 및 연결 종료 기능 함수(SendPacket, Disconnect)를 제공함
더 자세히 ...
 
class  JNetDBConn
 DB Connection 추상화 더 자세히 ...
 
class  JNetDBConnPool
 DB 커넥션 인스턴스 Pool 더 자세히 ...
 
class  JNetOdbcServer
 DB 커넥션 기능을 수행하는 DB 커넥션 객체 풀을 관리하여 커넥션(HoldConnection)과 SQL 쿼리 및 응답 처리(ExecQuery, FetchQuery) 추상화 제공 더 자세히 ...
 
class  JNetServer
 서버 기능이 구체화된 'JNetCore' 하위 클래스, 클라이언트와의 연결 완료 시 '세션 객체 생성' 및 'IOCP 객체에 소켓 장치 등록' 수행
패킷 수신 완료 시의 이벤트 함수에 디코딩 작업(OnRecv)과 패킷 송신 기능 함수에 인코딩 작업 추가
더 자세히 ...
 
struct  stMSG_HDR
 

타입정의

using SessionID64 = uint64
 
using PACKET_CODE = BYTE
 
using PACKET_SYMM_KEY = BYTE
 
using PACKET_LEN = uint16
 

열거형 타입

enum  { WVARCHAR_MAX = 4000 , BINARY_MAX = 8000 }
 

함수

void Encode (BYTE symmetricKey, BYTE randKey, USHORT payloadLen, BYTE &checkSum, BYTE *payloads)
 
bool Decode (BYTE symmetricKey, BYTE randKey, USHORT payloadLen, BYTE checkSum, BYTE *payloads)
 
bool Decode (BYTE symmetricKey, BYTE randKey, USHORT payloadLen, BYTE checkSum, JBuffer &ringPayloads)
 
BYTE GetRandomKey ()
 

상세한 설명

JNetCore/JNetServer/JNetOdbcServer/JNetClient class

타입정의 문서화

◆ SessionID64

◆ PACKET_CODE

◆ PACKET_SYMM_KEY

◆ PACKET_LEN

열거형 타입 문서화

◆ anonymous enum

anonymous enum
열거형 멤버
WVARCHAR_MAX 
BINARY_MAX 
10 {
11 WVARCHAR_MAX = 4000,
12 BINARY_MAX = 8000
13 };
@ WVARCHAR_MAX
Definition JNetDB.h:11
@ BINARY_MAX
Definition JNetDB.h:12

함수 문서화

◆ Encode()

void jnet::Encode ( BYTE symmetricKey,
BYTE randKey,
USHORT payloadLen,
BYTE & checkSum,
BYTE * payloads )
3 {
4 BYTE payloadSum = 0;
5 for (USHORT i = 0; i < payloadLen; i++) {
6 payloadSum += payloads[i];
7 payloadSum %= 256;
8 }
9 BYTE Pb = payloadSum ^ (randKey + 1);
10 BYTE Eb = Pb ^ (symmetricKey + 1);
11 checkSum = Eb;
12
13 for (USHORT i = 1; i <= payloadLen; i++) {
14 //BYTE Pn = payloads[i - 1] ^ (Pb + randKey + (BYTE)(i + 1));
15 //BYTE En = Pn ^ (Eb + dfPACKET_KEY + (BYTE)(i + 1));
16 BYTE Pn = payloads[i - 1] ^ (Pb + randKey + i + 1);
17 BYTE En = Pn ^ (Eb + symmetricKey + i + 1);
18
19 payloads[i - 1] = En;
20
21 Pb = Pn;
22 Eb = En;
23 }
24}
unsigned char BYTE
Definition CommTypes.h:3

◆ Decode() [1/2]

bool jnet::Decode ( BYTE symmetricKey,
BYTE randKey,
USHORT payloadLen,
BYTE checkSum,
BYTE * payloads )
25 {
26 BYTE Pb = checkSum ^ (symmetricKey + 1);
27 BYTE payloadSum = Pb ^ (randKey + 1);
28 BYTE Eb = checkSum;
29 BYTE Pn;
30 BYTE Dn;
31 BYTE payloadSumCmp = 0;
32
33 for (USHORT i = 1; i <= payloadLen; i++) {
34 //Pn = payloads[i - 1] ^ (Eb + dfPACKET_KEY + (BYTE)(i + 1));
35 //Dn = Pn ^ (Pb + randKey + (BYTE)(i + 1));
36 Pn = payloads[i - 1] ^ (Eb + symmetricKey + i + 1);
37 Dn = Pn ^ (Pb + randKey + i + 1);
38
39 Pb = Pn;
40 Eb = payloads[i - 1];
41 payloads[i - 1] = Dn;
42 payloadSumCmp += payloads[i - 1];
43 payloadSumCmp %= 256;
44 }
45
46 if (payloadSum != payloadSumCmp) {
47#if defined(ASSERT)
48 DebugBreak();
49#endif
50 return false;
51 }
52
53 return true;
54}

◆ Decode() [2/2]

bool jnet::Decode ( BYTE symmetricKey,
BYTE randKey,
USHORT payloadLen,
BYTE checkSum,
JBuffer & ringPayloads )
55 {
56 if (ringPayloads.GetDirectDequeueSize() >= payloadLen) {
57 return Decode(symmetricKey,randKey, payloadLen, checkSum, ringPayloads.GetDequeueBufferPtr());
58 }
59 else {
60 BYTE Pb = checkSum ^ (symmetricKey + 1);
61 BYTE payloadSum = Pb ^ (randKey + 1);
62 BYTE Eb = checkSum;
63 BYTE Pn, Dn;
64 BYTE payloadSumCmp = 0;
65
66 UINT offset = ringPayloads.GetDeqOffset();
67 BYTE* bytepayloads = ringPayloads.GetBeginBufferPtr();
68 for (USHORT i = 1; i <= payloadLen; i++, offset++) {
69 offset = offset % (ringPayloads.GetBufferSize() + 1);
70 //Pn = bytepayloads[offset] ^ (Eb + dfPACKET_KEY + (BYTE)(i + 1));
71 //Dn = Pn ^ (Pb + randKey + (BYTE)(i + 1));
72 Pn = bytepayloads[offset] ^ (Eb + symmetricKey + i + 1);
73 Dn = Pn ^ (Pb + randKey + i + 1);
74
75 Pb = Pn;
76 Eb = bytepayloads[offset];
77 bytepayloads[offset] = Dn;
78 payloadSumCmp += bytepayloads[offset];
79 payloadSumCmp %= 256;
80 }
81
82 if (payloadSum != payloadSumCmp) {
83#if defined(ASSERT)
84 DebugBreak();
85#endif
86 return false;
87 }
88
89 return true;
90 }
91}
bool Decode(BYTE symmetricKey, BYTE randKey, USHORT payloadLen, BYTE checkSum, BYTE *payloads)
Definition JNetEncryption.cpp:25

◆ GetRandomKey()

BYTE jnet::GetRandomKey ( )
inline
349 {
350 return rand() % UINT8_MAX; // 0b0000'0000 ~ 0b0111'1110 (0b1111'1111은 디코딩이 이루어지지 않은 페이로드 식별 값)
351 }