Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "libsmall.hpp"
- //localhost define
- #define localhost "127.0.0.1"
- //bytes needed as specified in project specs
- #define TYPE 4
- #define PADDIN 6
- #define NTERM 8
- #define SETVALUELEN 23
- #define SETVAL 26
- int smallSet(char *MachineName, int port, int SecretKey, char *variableName, char *value, int dataLength) {
- //connection to server
- int sock = 0;
- struct sockaddr_in server_address;
- sock = socket(AF_INET, SOCK_STREAM, 0);
- if (socket < 0) {
- cerr << "Error" << endl;
- return -1;
- }
- server_address.sin_family = AF_INET;
- server_address.sin_port = htons(port);
- //sets MachineName to 127.0.0.1 if "localhost" is entered by user
- int localhostCheck = strcmp(MachineName, "localhost");
- if (!localhostCheck) {
- strcpy(MachineName, localhost);
- }
- //returns errors uopon unsuccessful connection
- if (inet_pton(AF_INET, MachineName, &server_address.sin_addr) <= 0) {
- cerr << "Error" << endl;
- return -1;
- }
- if (connect(sock, (struct sockaddr *)&server_address, sizeof(server_address)) < 0) {
- cerr << "Error" << endl;
- return -1;
- }
- //sends variable set to server, doing all appropriate byte allocations
- char buffer[128];
- //checks secretkey
- SecretKey = htonl(SecretKey);
- memcpy(buffer, (char*)&SecretKey, sizeof(int));
- //determines what program to run
- short type = htons(0);
- //buffer for type (set, get, digest, run)
- memcpy(buffer + TYPE, (char*)&type, sizeof(type));
- short pad = 0;
- //arbitrary padding
- memcpy(buffer + PADDIN, (char*)&pad, sizeof(pad));
- //null terminated variable name, sets last character to null terminating character
- buffer[NTERM + strlen(variableName)] = '\0';
- strncpy(buffer + NTERM, variableName, strlen(variableName));
- short dlen = htons((short)dataLength);
- memcpy(buffer + SETVALUELEN, (char*)&dlen, sizeof(dlen));
- strncpy(buffer + SETVAL, value, strlen(value));
- buffer[SETVAL + strlen(value)] = '\0';
- //sends info
- send(sock, buffer, sizeof(buffer), 0);
- char ret;
- read(sock, &ret, 1);
- return ret;
- }
- int smallGet(char *MachineName, int port, int SecretKey, char *variableName) {
- //see comments above for repeated code
- int sock = 0;
- struct sockaddr_in server_address;
- sock = socket(AF_INET, SOCK_STREAM, 0);
- if (socket < 0) {
- cerr << "Error" << endl;
- return -1;
- }
- server_address.sin_family = AF_INET;
- server_address.sin_port = htons(port);
- int localhostCheck = strcmp(MachineName, "localhost");
- if (!localhostCheck) {
- strcpy(MachineName, localhost);
- }
- if (inet_pton(AF_INET, MachineName, &server_address.sin_addr) <= 0) {
- cerr << "Error" << endl;
- return -1;
- }
- if (connect(sock, (struct sockaddr *)&server_address, sizeof(server_address)) < 0) {
- cerr << "Error" << endl;
- return -1;
- }
- char buffer[128];
- SecretKey = htonl(SecretKey);
- memcpy(buffer, (char*)&SecretKey, sizeof(int));
- short type = htons(1);
- memcpy(buffer + TYPE, (char*)&type, sizeof(type));
- short pad = 0;
- memcpy(buffer + PADDIN, (char*)&pad, sizeof(pad));
- buffer[NTERM + strlen(variableName)] = '\0';
- strncpy(buffer + NTERM, variableName, strlen(variableName));
- variableName[strlen(variableName)] = '\0';
- send(sock, buffer, sizeof(buffer), 0);
- //sends value of get and displays it
- char ret;
- read(sock, &ret, 1);
- int padding;
- read(sock, &padding, 3);
- short len;
- read(sock, &len, sizeof(short));
- len = ntohs(len);
- char result[100];
- read(sock, &result, len);
- cout << string(result) << endl;
- return ret;
- }
- int smallDigest(char *MachineName, int port, int SecretKey, char *data, int dataLength) {
- int sock = 0;
- struct sockaddr_in server_address;
- sock = socket(AF_INET, SOCK_STREAM, 0);
- if (socket < 0) {
- cerr << "Error" << endl;
- return -1;
- }
- server_address.sin_family = AF_INET;
- server_address.sin_port = htons(port);
- int localhostCheck = strcmp(MachineName, "localhost");
- if (!localhostCheck) {
- strcpy(MachineName, localhost);
- }
- if (inet_pton(AF_INET, MachineName, &server_address.sin_addr) <= 0) {
- cerr << "Error" << endl;
- return -1;
- }
- if (connect(sock, (struct sockaddr *)&server_address, sizeof(server_address)) < 0) {
- cerr << "Error" << endl;
- return -1;
- }
- char buffer[128];
- SecretKey = htonl(SecretKey);
- memcpy(buffer, (char*)&SecretKey, sizeof(int));
- short type = htons(2);
- memcpy(buffer + TYPE, (char*)&type, sizeof(type));
- short pad = 0;
- memcpy(buffer + PADDIN, (char*)&pad, sizeof(pad));
- short dlen = htons((short)dataLength);
- memcpy(buffer + NTERM, (char*)&dlen, sizeof(dlen));
- send(sock, buffer, sizeof(buffer), 0);
- char ret;
- read(sock, &ret, 1);
- return ret;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement