FLImaging 6.12.9.2
DeviceSocketBase.h
1#pragma once
5
6#include "DeviceBase.h"
7#include "DeviceSocketDefinitions.h"
8#include <winsock2.h>
9
11namespace FLImaging
12{
14 namespace Devices
15 {
18
26 class FL_EXPORT CDeviceSocketBase : public CDeviceBase
27 {
28 public:
29
38
47
64
77
87 virtual bool IsSecured() const;
88
104 virtual const CResult SetConnectionIPAddress(const char* pU8Address, uint16_t u16Port);
105
121 virtual const CResult SetConnectionDNSAddress(const char* pDNSAddress, uint16_t u16Port);
122
132 const SOCKADDR_IN* GetSockAddrIn() const;
133
145 virtual const CResult Initialize() override;
146
158 virtual const CResult Terminate() override;
159
169 virtual bool IsFLProtocol() const;
170
180 virtual bool IsBlockTransferMode() const;
181
191 virtual bool IsPassiveMode() const;
192
206 virtual const CResult SetBlockSize(int32_t i32BlockSize);
207
217 virtual int32_t GetBlockSize() const;
218
219
229 virtual int64_t GetSocket() const;
230
247
260
271
285 const CResult CreateKeyPair(uint32_t u32Bits);
286
304 const CResult GetPublicKey(Base::CFLData& fldModulus, Base::CFLData& fldPublicExponent) const;
305
325 const CResult GetPrivateKey(Base::CFLData& fldModulus, Base::CFLData& fldPublicExponent, Base::CFLData& fldPrivateExponent) const;
326
344 const CResult SetPublicKey(const Base::CFLData& fldModulus, const Base::CFLData& fldPublicExponent);
345
365 const CResult SetPrivateKey(const Base::CFLData& fldModulus, const Base::CFLData& fldPublicExponent, const Base::CFLData& fldPrivateExponent);
366
380 const CResult GetIPAddress(uint8_t arrU8IPAddr[4]) const;
381
391 uint16_t GetPort() const;
392
403
416
426 virtual void SetLogging(bool bLogging);
427
437 virtual bool IsLogging() const;
438
439
449 virtual void SetLoggingComm(bool bLoggingComm);
450
460 virtual bool IsLoggingComm() const;
461
475 const CResult AddSentBytes(int64_t i64SentBytes);
476
486 int64_t GetCumulativeSentBytes() const;
487
500
514 const CResult AddRecvBytes(int64_t i64RecvBytes);
515
525 int64_t GetCumulativeRecvBytes() const;
526
539
540
541 DeclareGetClassType();
542
543 protected:
544
545 virtual bool CheckDeviceLibraries() const override;
546
547 protected:
548 virtual void SendOnConnecting();
549 virtual void SendOnConnected();
550 virtual void SendOnDisconnecting();
551 virtual void SendOnDisconnected();
552 virtual void SendOnReceived(const CDeviceSocketPacket* pSocketPacket);
553 virtual void SendOnSending(const CDeviceSocketPacket* pSocketPacket);
554 virtual void SendOnSent(const CDeviceSocketPacket* pSocketPacket);
555
556 virtual const CResult ConnectWithTimeout(SOCKET hSocket, const sockaddr_in& sockAddrIn, uint32_t u32TimeoutSec);
557 virtual bool IsInternetAvailable(uint32_t u32TimeoutSec = 2);
558
559 protected:
560 Base::CRSACryptography m_rsaCryptography;
561 Base::CFLData m_fldModulus;
562 Base::CFLData m_fldPublicExponent;
563 Base::CFLData m_fldPrivateExponent;
564
565 ESocketMode m_eSocketMode;
566 volatile SOCKET m_hSocket;
567 volatile bool m_bTrouble;
568 int32_t m_i32BlockSize;
569 Base::CFLString<char> m_astrDNS;
570 CDeviceSocketBase* m_pParent;
571
572 bool m_bLogging;
573 bool m_bLoggingComm;
574
575 SOCKADDR_IN m_sockAddr;
576
577 static WSADATA m_wsaData;
578 static int64_t m_i64WsaInitCount;
579
580 int64_t m_i64CumulativeSentBytes;
581 int64_t m_i64CumulativeRecvBytes;
582
583 CDeviceSocketPacketDistinguisher* m_pSocketPacketDistinguisher;
584
585 friend class CDeviceSocketClientManager;
586 friend class CDeviceSocketClientASCIIManager;
587 friend class CDeviceSocketServerASCII;
588 friend class CDeviceSocketClientASCII;
589 };
590 }
591}
592
데이터 클래스
Definition FLData.h:30
Template type 의 문자열 클래스
Definition FLString.h:34
RSA 암호 클래스
Definition RSACryptography.h:30
FLImaging 모듈의 수행 결과 객체
Definition ResultsDef.h:1640
CDeviceSocketBase * GetParent() const
부모(서버) 소켓의 포인터를 얻어 옵니다.
virtual const CResult Terminate() override
소켓 종료를 수행합니다.
virtual bool IsBlockTransferMode() const
전송 모드가 블록 전송 모드인지 확인합니다.
int64_t GetCumulativeRecvBytes() const
누적 수신 바이트를 얻어 옵니다.
const CResult GetPrivateKey(Base::CFLData &fldModulus, Base::CFLData &fldPublicExponent, Base::CFLData &fldPrivateExponent) const
비밀 키를 얻어 옵니다.
virtual const CResult Initialize() override
소켓 초기화를 수행합니다. 소켓 모드 설정 및 연결 정보 설정을 먼저 수행해야 합니다.
virtual const CResult SetConnectionIPAddress(const char *pU8Address, uint16_t u16Port)
연결할 IP 주소를 설정합니다.
const SOCKADDR_IN * GetSockAddrIn() const
소켓 주소를 SOCKADDR_IN* 형태로 얻어 옵니다.
virtual bool IsLoggingComm() const
통신 로그 출력 여부를 얻어 옵니다.
virtual ESocketMode GetSocketMode()
소켓 모드를 반환합니다.
const CResult AddSentBytes(int64_t i64SentBytes)
송신한 바이트 값을 누적 송신 바이트에 추가 합니다.
virtual bool IsPassiveMode() const
연결이 수동 모드인지 확인합니다.
const CResult ResetCumulativeRecvBytes()
누적 수신 바이트를 초기화 합니다.
virtual int64_t GetSocket() const
int64_t 타입으로 소켓을 얻어 옵니다.
virtual bool IsFLProtocol() const
프로토콜이 FLProtocol인지 확인합니다.
virtual bool IsLogging() const
로그 출력 여부를 얻어 옵니다.
virtual void SetLogging(bool bLogging)
로그 출력 여부를 설정합니다.
const CResult SetPublicKey(const Base::CFLData &fldModulus, const Base::CFLData &fldPublicExponent)
공개 키를 설정합니다.
int64_t GetCumulativeSentBytes() const
누적 송신 바이트를 얻어 옵니다.
const CResult ResetCumulativeSentBytes()
누적 송신 바이트를 초기화 합니다.
const Base::CFLString< char > & GetDNS() const
SetConnectionDNSAddress 함수로 설정된 DNS를 얻어옵니다.
const CResult AddRecvBytes(int64_t i64RecvBytes)
수신한 바이트 값을 누적 수신 바이트에 추가 합니다.
virtual ~CDeviceSocketBase()
기본 소멸자
virtual const CResult SetConnectionDNSAddress(const char *pDNSAddress, uint16_t u16Port)
연결할 DNS 주소를 설정합니다.
virtual int32_t GetBlockSize() const
데이터 전송을 위한 현재 블록 크기를 가져옵니다.
const CResult GetIPAddress(uint8_t arrU8IPAddr[4]) const
IP 주소를 얻어 옵니다.
virtual CDeviceSocketPacketDistinguisher * GetSocketPacketDistinguisher() const
CDeviceSocketPacketDistinguisher 객체를 얻어 옵니다.
virtual const CResult SetSocketMode(ESocketMode eSocketMode=ESocketMode_FLProtocol_Passive_Plain)
소켓 모드를 설정 합니다.
virtual void SetLoggingComm(bool bLoggingComm)
통신 로그 출력 여부를 설정합니다.
virtual const CResult SetBlockSize(int32_t i32BlockSize)
데이터 전송을 위한 블록 크기를 설정합니다.
virtual const CResult AssignSocketPacketDistinguisher(CDeviceSocketPacketDistinguisher *pSocketPacketDistinguisher)
CDeviceSocketPacketDistinguisher 를 설정합니다.
const CResult SetPrivateKey(const Base::CFLData &fldModulus, const Base::CFLData &fldPublicExponent, const Base::CFLData &fldPrivateExponent)
비밀 키를 설정합니다.
const CResult GetPublicKey(Base::CFLData &fldModulus, Base::CFLData &fldPublicExponent) const
공개 키를 얻어 옵니다.
uint16_t GetPort() const
현재 사용 중인 포트 번호를 가져옵니다.
virtual void ClearSocketPacketDistinguisher()
CDeviceSocketPacketDistinguisher 객체를 제거합니다.
const CResult CreateKeyPair(uint32_t u32Bits)
보안에 사용될 Key 쌍을 생성합니다.
virtual bool IsSecured() const
보안 전송 여부를 얻어 옵니다.
패킷을 구분하여 해당 패킷에 등록한 프로시저를 실행시키도록 하는 클래스
Definition DeviceSocketPacketDistinguisher.h:26
소켓 패킷 클래스
Definition DeviceSocketPacket.h:18
소켓 서버 클래스
Definition DeviceSocketServer.h:25
Definition AutoFileCleaner.h:17
ESocketMode
통신에 사용되는 소켓 모드의 정의
Definition DefinitionsDevices.h:29
@ ESocketMode_FLProtocol_Passive_Plain
FLProtocol Passive mode with Plain communication
Definition DefinitionsDevices.h:33