· 7 years ago · Apr 22, 2018, 01:58 AM
1//libsmall.cpp
2#include "libsmall.hpp"
3
4#define localhost "127.0.0.1"
5
6int smallSet(char *MachineName, int port, int SecretKey, char *variableName, char *value, int dataLength) {
7 int sock = 0;
8 struct sockaddr_in server_address;
9 sock = socket(AF_INET, SOCK_STREAM, 0);
10 if (socket < 0) {
11 cerr << "Error" << endl;
12 return -1;
13 }
14
15 server_address.sin_family = AF_INET;
16 server_address.sin_port = htons(port);
17
18 int localhostCheck = strcmp(MachineName, "localhost");
19 if (!localhostCheck) {
20 strcpy(MachineName, localhost);
21 }
22
23 if (inet_pton(AF_INET, MachineName, &server_address.sin_addr) <= 0) {
24 cerr << "Error" << endl;
25 return -1;
26 }
27 if (connect(sock, (struct sockaddr *)&server_address, sizeof(server_address)) < 0) {
28 cerr << "Error" << endl;
29 return -1;
30 }
31 char buffer[128];
32 SecretKey = htonl(SecretKey);
33 memcpy(buffer, (char*)&SecretKey, sizeof(int));
34 short type = htons(0);
35 memcpy(buffer + 4, (char*)&type, sizeof(type));
36 short pad = 0;
37 memcpy(buffer + 6, (char*)&pad, sizeof(pad));
38 strncpy(buffer + 8, variableName, strlen(variableName));
39 short dlen = htons((short)dataLength);
40 memcpy(buffer + 23, (char*)&dlen, sizeof(dlen));
41 strncpy(buffer + 26, value, strlen(value));
42 buffer[26+strlen(value)] = '\0';
43 send(sock, buffer, sizeof(buffer), 0);
44 char ret;
45 read(sock, &ret, 1);
46 return ret;
47}
48
49int smallGet(char *MachineName, int port, int SecretKey, char *variableName) {
50 int sock = 0;
51 struct sockaddr_in server_address;
52 sock = socket(AF_INET, SOCK_STREAM, 0);
53 if (socket < 0) {
54 cerr << "Error" << endl;
55 return -1;
56 }
57
58 server_address.sin_family = AF_INET;
59 server_address.sin_port = htons(port);
60
61 int localhostCheck = strcmp(MachineName, "localhost");
62 if (!localhostCheck) {
63 strcpy(MachineName, localhost);
64 }
65
66 if (inet_pton(AF_INET, MachineName, &server_address.sin_addr) <= 0) {
67 cerr << "Error" << endl;
68 return -1;
69 }
70 if (connect(sock, (struct sockaddr *)&server_address, sizeof(server_address)) < 0) {
71 cerr << "Error" << endl;
72 return -1;
73 }
74 char buffer[128];
75 SecretKey = htonl(SecretKey);
76 memcpy(buffer, (char*)&SecretKey, sizeof(int));
77 short type = htons(1);
78 memcpy(buffer + 4, (char*)&type, sizeof(type));
79 short pad = 0;
80 memcpy(buffer + 6, (char*)&pad, sizeof(pad));
81 strncpy(buffer + 8, variableName, strlen(variableName));
82 send(sock, buffer, sizeof(buffer), 0);
83 char ret;
84 read(sock, &ret, 1);
85 int padding;
86 read(sock, &padding, 3);
87 short len;
88 read(sock, &len, sizeof(short));
89 len = ntohs(len);
90 char result[100];
91 read(sock, &result, len);
92 cout << string(result) << endl;
93 return ret;
94}
95
96int smallDigest(char *MachineName, int port, int SecretKey, char *data, int dataLength) {
97 int sock = 0;
98 struct sockaddr_in server_address;
99 sock = socket(AF_INET, SOCK_STREAM, 0);
100 if (socket < 0) {
101 cerr << "Error" << endl;
102 return -1;
103 }
104
105 server_address.sin_family = AF_INET;
106 server_address.sin_port = htons(port);
107
108 int localhostCheck = strcmp(MachineName, "localhost");
109 if (!localhostCheck) {
110 strcpy(MachineName, localhost);
111 }
112
113 if (inet_pton(AF_INET, MachineName, &server_address.sin_addr) <= 0) {
114 cerr << "Error" << endl;
115 return -1;
116 }
117 if (connect(sock, (struct sockaddr *)&server_address, sizeof(server_address)) < 0) {
118 cerr << "Error" << endl;
119 return -1;
120 }
121 char buffer[128];
122 SecretKey = htonl(SecretKey);
123 memcpy(buffer, (char*)&SecretKey, sizeof(int));
124 short type = htons(2);
125 memcpy(buffer + 4, (char*)&type, sizeof(type));
126 short pad = 0;
127 memcpy(buffer + 6, (char*)&pad, sizeof(pad));
128 short dlen = htons((short)dataLength);
129 memcpy(buffer + 7, (char*)&dlen, sizeof(dlen));
130 send(sock, buffer, sizeof(buffer), 0);
131 char ret;
132 read(sock, &ret, 1);
133 return ret;
134}