1 #include "stdio.h"
2 #include "stdlib.h"
3 #include "string.h"
4 //VS2012 动态库 第一套模板
5 typedef struct _SCK_HANDLE {
6 char version[16];
7 char serverip[16];
8 int serverport;
9 char *pBuf;
10 int buflen;
11 }SCK_HANDLE;
12
13 //------------------第一套api接口---Begin--------------------------------//
14 //客户端初始化 获取handle上下文
15 __declspec(dllexport) //加这个才能导出lib
16 int cltSocketInit(void **handle /*out*/)
17 {
18 int ret = 0;
19 SCK_HANDLE *sh = NULL;
20 sh = (SCK_HANDLE *)malloc(sizeof(SCK_HANDLE));
21 if(sh == NULL)
22 {
23 ret = -1;
24 //打印日志
25 printf("func cltSocketInit() err:%d", ret);
26 return ret;
27 }
28 strcpy(sh->version, "1.0.0");
29 strcpy(sh->serverip, "192.168.0.100");
30 sh->serverport = 8080;
31 *handle = sh;
32 return 0;
33 }
34
35 //客户端发报文
36 __declspec(dllexport)
37 int cltSocketSend(void *handle /*in*/, unsigned char *buf /*in*/, int buflen /*in*/)
38 {
39 int ret = 0;
40 SCK_HANDLE *sh = NULL;
41 if(handle == NULL || buf == NULL || buflen > 33333333333)
42 {
43 ret = -1;
44 printf("func cltSocketSend() err:%d", ret);
45 return ret;
46 }
47 sh = (SCK_HANDLE *)handle;
48 sh->pBuf = (char *)malloc(buflen * sizeof(char));
49 if(sh->pBuf == NULL)
50 {
51 ret = -1;
52 printf("func cltSocketSend() malloc err, buflen:%d", buflen);
53 return ret;
54 }
55 memcpy(sh->pBuf, buf, buflen);
56 sh->buflen = buflen;
57
58 return ret;
59 }
60
61 //客户端收报文
62 __declspec(dllexport)
63 int cltSocketRev(void *handle /*in*/, unsigned char *buf /*in*/, int *buflen /*in out*/)
64 {
65 int ret = 0;
66 SCK_HANDLE *sh = NULL;
67 if(handle == NULL || buf == NULL || buflen == NULL)
68 {
69 ret = -1;
70 printf("func cltSocketRev() err:%d", ret);
71 return ret;
72 }
73 sh = (SCK_HANDLE *)handle;
74
75 memcpy(buf, sh->pBuf, sh->buflen);
76 *buflen = sh->buflen;
77 return ret;
78 }
79
80 //客户端释放资源
81 __declspec(dllexport)
82 int cltSocketDestory(void *handle/*in*/)
83 {
84 int ret = 0;
85 SCK_HANDLE *sh = NULL;
86 if(handle == NULL)
87 {
88 ret = -1;
89 printf("func cltSocketRev() err:%d", ret);
90 return ret;
91 }
92 sh = (SCK_HANDLE *)handle;
93
94 if(sh->pBuf != NULL)
95 {
96 free(sh->pBuf);
97 }
98 free(sh);
99
100 return ret;
101 }