DMNetServerF.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. //---------------------------------------------------------------------------
  2. #ifndef DMNetServerFH
  3. #define DMNetServerFH
  4. //---------------------------------------------------------------------------
  5. #include <Classes.hpp>
  6. #include <Controls.hpp>
  7. #include <StdCtrls.hpp>
  8. #include <Forms.hpp>
  9. #include "IdAntiFreeze.hpp"
  10. #include "IdAntiFreezeBase.hpp"
  11. #include "IdBaseComponent.hpp"
  12. #include "IdComponent.hpp"
  13. #include "IdUDPBase.hpp"
  14. #include "IdUDPServer.hpp"
  15. //---------------------------------------------------------------------------
  16. #include "IdUDPClient.hpp"
  17. //---------------------------------------------------------------------------
  18. #include "CenterCommF.h"
  19. //---------------------------------------------------------------------------
  20. #define INT_MAX_PROCESS_COMM 128 /* 최대 process 통신 설정 */
  21. #define S_SUCC 0 // success
  22. #define S_FAIL -1 // fail
  23. /*
  24. * 송수신 대상 프로세스 정보
  25. */
  26. typedef struct tagSystemInfo
  27. {
  28. AnsiString ProcessId; /* 프로세스 ID */
  29. BYTE SystemId; /* 시스템 ID */
  30. AnsiString SystemTp; /* 시스템 Type */
  31. DWORD IpAddress; /* ip address */
  32. int UdpPort; /* udp port */
  33. } ST_SYSTEM_INFO;
  34. //---------------------------------------------------------------------------
  35. typedef struct process_communication_struct
  36. {
  37. int Count; /* process 갯수 */
  38. ST_SYSTEM_INFO Unit[INT_MAX_PROCESS_COMM];
  39. } PROCESS_COMMUNICATION_STRUCT;
  40. //---------------------------------------------------------------------------
  41. /*
  42. * 송수신 데이터 저장 큐 정보
  43. */
  44. #define MAX_UDP_MSG_Q 128
  45. typedef struct
  46. {
  47. int QIdx;
  48. //IPC_MSG_DATA Rx[MAX_UDP_MSG_Q];
  49. } UDP_DATA_Q;
  50. //---------------------------------------------------------------------------
  51. class TDMNetServer : public TDataModule
  52. {
  53. __published: // IDE-managed Components
  54. TIdUDPServer *FUDPSvr;
  55. TIdAntiFreeze *IdAntiFreeze1;
  56. TIdUDPClient *FUDPCli;
  57. void __fastcall FUDPSvrUDPRead(TIdUDPListenerThread *AThread, TBytes AData,
  58. TIdSocketHandle *ABinding);
  59. void __fastcall DataModuleDestroy(TObject *Sender);
  60. private: // User declarations
  61. public:
  62. String __fastcall GetLocalIP();
  63. void __fastcall Close();
  64. int __fastcall Open(int ABuffSize);
  65. int __fastcall GetPort();
  66. String __fastcall GetIP();
  67. //int __fastcall RecvDataCommon(INT_PACKET *PKT);
  68. public:
  69. HWND__ *Handle;
  70. AnsiString ErrorMsg;
  71. UDP_DATA_Q *DataQ;
  72. ST_SYSTEM_INFO Info;
  73. HWND FHandle;
  74. AnsiString FTrsPrcsId;
  75. AnsiString FRcvPrcsId;
  76. int FBindPort;
  77. BYTE FPktSeq;
  78. BYTE __fastcall GetNextPktSeq();
  79. int __fastcall SendData(String AHost, int APort, BYTE *AData, int ALen);
  80. int __fastcall SendData(DWORD AHost, int APort, BYTE *AData, int ALen);
  81. public: // User declarations
  82. __fastcall TDMNetServer(TComponent* Owner);
  83. };
  84. //---------------------------------------------------------------------------
  85. extern PACKAGE TDMNetServer *DMNetServer;
  86. //---------------------------------------------------------------------------
  87. extern PROCESS_COMMUNICATION_STRUCT g_Process;
  88. //---------------------------------------------------------------------------
  89. #endif