#if !defined(AFX_CHECKLOCK_H__FCD09AE5_AA28_42FA_9322_C5AADC9862C5__INCLUDED_) #define AFX_CHECKLOCK_H__FCD09AE5_AA28_42FA_9322_C5AADC9862C5__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif //总大小 256 typedef struct ProductInfo { char szProName[11]; //产品名称 五个汉字 1 char szProCode[10]; //产品代号 2 DWORD dwVersion; //产品版本2012,2013 可组合. 3 char bLockType; //111 单机锁 121 网络锁 100 试用版 4 __int64 tTryDayStop; //试用截止时间 5 char szServer[17]; //服务端ip地址 int nPort[5]; //端口号,固定端口号 6 }PRODUCTINFO; //总大小 256 typedef struct ProductInfoLock { char szProName[11]; //产品名称 五个汉字 char szProCode[10]; //产品代号 DWORD dwVersion; //产品版本2012,2013 可组合. char szLockCode[14]; //锁编号base64,用户远程写锁 short nAccessCount; //访问点数 char bLockType; //111 单机锁 121 网络锁 char szDate[17]; //写锁时间 2012-12-20 12:30 char szVerify[41]; //整体数据的校验码sha1 char szReserve[128]; //预留 }PRODUCTINFOLOCK; class CCheckLock { public: CCheckLock(); virtual ~CCheckLock(); bool CheckLock(); void SendLogoutMessage(); public: bool CheckServerLock(ProductInfo* pProInfo); bool CheckSingleLock(ProductInfo* pProInfo); bool CheckTryversion(ProductInfo* pProInfo); int ParaseText(CString& sText,TCHAR ch,CStringArray& arFields); CTime FormatTime(CString& sDate); bool SpecialUserPermission(); public: SOCKET m_theSocket; ProductInfo m_proInfo; char m_szBuf[MAX_PATH]; bool m_bAutocadExit; }; #endif // !defined(AFX_CHECKLOCK_H__FCD09AE5_AA28_42FA_9322_C5AADC9862C5__INCLUDED_)