· 7 years ago · Apr 19, 2018, 05:54 PM
1#include <iostream>
2#include <stdio.h>
3#include <string.h>
4#include <stdlib.h>
5#include <errno.h>
6#include <unistd.h>
7#include <sys/time.h>
8#include <sys/types.h>
9#include <arpa/inet.h>
10#include <sys/socket.h>
11#include <netinet/in.h>
12//#include "server_client_library.h"
13
14using namespace std;
15
16int smallSet(char *MachineName, int port, int SecretKey, char *variableName, char *value, int dataLength) {
17 return 0;
18}
19
20int smallGet(char *MachineName, int port, int SecretKey, char *variableName, char *value, int *resultLength) {
21 return 0;
22}
23
24int smallDigest(char *MachineName, int port, int SecretKey, char *data, int dataLength, char *result, int *resultLength) {
25 return 0;
26}
27
28int main(int argc, const char* argv[]) {
29 if(argc != 3) {
30 cout << "Invalid Input. Expected 3 arguments" << endl;
31 }
32 else {
33 int server_fd, new_socket, valread;
34 struct sockaddr_in address;
35 int opt = 1;
36 int addrlen = sizeof(address);
37 char buffer[1024] = {0};
38 char hello[] = "Hello from server";
39
40 if((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
41 perror("socket failed");
42 exit(EXIT_FAILURE);
43 }
44
45 if(setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) {
46 perror("setsockopt");
47 exit(EXIT_FAILURE);
48 }
49
50 address.sin_family = AF_INET;
51 address.sin_addr.s_addr = INADDR_ANY;
52 int PORT = atoi(argv[1]);
53 cout << PORT << endl;
54 address.sin_port = htons(PORT);
55
56 if((bind(server_fd, (struct sockaddr *)&address, sizeof(address))) < 0) {
57 perror("bind failed");
58 exit(EXIT_FAILURE);
59 }
60
61 cout << "bind" << endl;
62 if(listen(server_fd, 3) < 0) {
63 perror("listen");
64 exit(EXIT_FAILURE);
65 }
66
67 cout << "listen" << endl;
68 if((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t *)&addrlen)) < 0) {
69 perror("accept");
70 exit(EXIT_FAILURE);
71 }
72
73 cout << "accepted" << endl;
74 valread = read(new_socket, buffer, 1024);
75 cout << buffer << endl;
76 send(new_socket, hello, strlen(hello), 0);
77 cout << "Hello message sent" << endl;
78 return 0;
79 }
80}