CCLibrary.h是提供给应用include的文件,与CCLbrary.c一起提供必要的宏供应用调用。
#ifndef __CC_LIBRARY__
#define __CC_LIBRARY__
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#if defined(__WITH_CC__)
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#include "CCDataType.h"
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
extern int cc_TelnetServer_Create();
extern int cc_InitData(const char* prompt, const char* ip, unsigned short port, int max);
extern int cc_Run();
extern int cc_IsRun();
extern int cc_RegCmd(const char* cmd, const char* help, const _cc_cmdcallback callback);
extern void cc_Destroy();
extern int cc_CmdOutput(struct _cc_telnet_clientdata* client, const char* fmt,
);
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#define CC_CREATE(prompt, ip, port, max) \
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{ \
cc_InitData(prompt, ip, port, max); \
cc_Run(); \
}
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#define CC_DESTROY() \
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{\
cc_Destroy(); \
}
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#define CC_ISRUN() cc_IsRun()
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#define CC_REGCMD(cmd, help, callback) cc_RegCmd(cmd, help, callback)
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#define CC_CMD_OUTPUT cc_CmdOutput
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#else
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#define CC_CREATE(prompt, ip, port, max) {}
#define CC_DESTROY() {}
#define CC_ISRUN() 0
#define CC_REGCMD(cmd, help, callback) {}
#define CC_CMD_OUTPUT(client, fmt,
) {}
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#endif
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#endif
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#include <memory.h>
#include <string.h>
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#include "CCDataType.h"
#include "CCCmd.h"
#include "CCLibrary.h"
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//* -------------------------------- */
struct _cc_data cc_Global;
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
DWORD WINAPI cc_TelnetCreate(LPVOID param)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
return cc_TelnetServer_Create();
}
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//* Export method */
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
int cc_InitData(const char* prompt, const char* ip, unsigned short port, int max)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
memset(&cc_Global, 0, sizeof(cc_Global));
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
strncpy(cc_Global.telnet.prompt, prompt, sizeof(cc_Global.telnet.prompt));
strncpy(cc_Global.telnet.ip, ip, sizeof(cc_Global.telnet.ip));
cc_Global.telnet.port = port;
cc_Global.telnet.max = max;
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
cc_Global.telnet.run = 0;
cc_Global.telnet.sock = INVALID_SOCKET;
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
return cc_RegDefaultCmds();
}
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
void cc_Destroy()
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
cc_TelnetServer_Final();
}
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
int cc_Run()
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
DWORD id = 0;
HANDLE thread = CreateThread(NULL, 0, cc_TelnetCreate, NULL, 0, &id);
if(thread == NULL)
return -1;
cc_Global.telnet.run = 1;
return 0;
}
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
int cc_IsRun()
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
return cc_Global.telnet.run;
}