#include "stdio.h"
#include "stdlib.h"
#include "string.h"
//VS2012 动态库 第一套模板
typedef struct _SCK_HANDLE {
char version[16];
char serverip[16];
int serverport;
char *pBuf;
int buflen;
}SCK_HANDLE;
//------------------第一套api接口---Begin--------------------------------//
//客户端初始化 获取handle上下文
__declspec(dllexport) //加这个才能导出lib
int cltSocketInit(void **handle /*out*/)
{
int ret = 0;
SCK_HANDLE *sh = NULL;
sh = (SCK_HANDLE *)malloc(sizeof(SCK_HANDLE));
if(sh == NULL)
{
ret = -1;
//打印日志
printf("func cltSocketInit() err:%d", ret);
return ret;
}
strcpy(sh->version, "1.0.0");
strcpy(sh->serverip, "192.168.0.100");
sh->serverport = 8080;
*handle = sh;
return 0;
}
//客户端发报文
__declspec(dllexport)
int cltSocketSend(void *handle /*in*/, unsigned char *buf /*in*/, int buflen /*in*/)
{
int ret = 0;
SCK_HANDLE *sh = NULL;
if(handle == NULL || buf == NULL || buflen > 33333333333)
{
ret = -1;
printf("func cltSocketSend() err:%d", ret);
return ret;
}
sh = (SCK_HANDLE *)handle;
sh->pBuf = (char *)malloc(buflen * sizeof(char));
if(sh->pBuf == NULL)
{
ret = -1;
printf("func cltSocketSend() malloc err, buflen:%d", buflen);
return ret;
}
memcpy(sh->pBuf, buf, buflen);
sh->buflen = buflen;
return ret;
}
//客户端收报文
__declspec(dllexport)
int cltSocketRev(void *handle /*in*/, unsigned char *buf /*in*/, int *buflen /*in out*/)
{
int ret = 0;
SCK_HANDLE *sh = NULL;
if(handle == NULL || buf == NULL || buflen == NULL)
{
ret = -1;
printf("func cltSocketRev() err:%d", ret);
return ret;
}
sh = (SCK_HANDLE *)handle;
memcpy(buf, sh->pBuf, sh->buflen);
*buflen = sh->buflen;
return ret;
}
//客户端释放资源
__declspec(dllexport)
int cltSocketDestory(void *handle/*in*/)
{
int ret = 0;
SCK_HANDLE *sh = NULL;
if(handle == NULL)
{
ret = -1;
printf("func cltSocketRev() err:%d", ret);
return ret;
}
sh = (SCK_HANDLE *)handle;
if(sh->pBuf != NULL)
{
free(sh->pBuf);
}
free(sh);
return ret;
}