-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathServerProgram.cpp
More file actions
146 lines (113 loc) · 3.51 KB
/
Copy pathServerProgram.cpp
File metadata and controls
146 lines (113 loc) · 3.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
// Server side C/C++ program to demonstrate Socket programming
#include <unistd.h>
#include <stdio.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <string.h>
#include <string>
#include <arpa/inet.h>
using namespace std;
//simple server and socket library
class Server{
private :
int port;
int server_fd, new_socket, valread;
struct sockaddr_in address;
int opt = 1;
int addrlen = sizeof(address);
char buffer[1024] = {0};
public :
void setup(int port){
port = port;
if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
perror("socket creation failed");
exit(EXIT_FAILURE);
}
if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT,
&opt, sizeof(opt))) {
perror("socket attaching failed");
exit(EXIT_FAILURE);
}
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons( port );
if (bind(server_fd, (struct sockaddr *)&address,
sizeof(address))<0){
perror("bind failed");
exit(EXIT_FAILURE);
}
if (listen(server_fd, 3) < 0) {
perror("listen");
exit(EXIT_FAILURE);
}
}
char* listen_request(char * send_buffer){
if ((new_socket = accept(server_fd, (struct sockaddr *)&address,
(socklen_t*)&addrlen))<0) {
perror("accept");
exit(EXIT_FAILURE);
}
valread = read( new_socket , buffer, 1024);
send(new_socket , send_buffer , strlen(send_buffer) , 0 );
printf("Server : Sent \n");
return buffer;
}
};
class Client{
private:
int sock = 0, valread;
struct sockaddr_in serv_addr;
char buffer[1024] = {0};
char * destn ;
int portn=0;
public:
int setup(char * dest, int port){
destn = dest;
portn = port;
}
char* send_request(char* buff){
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
printf("\n Socket creation error \n");
return "Null";
}
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(portn);
if(inet_pton(AF_INET, destn, &serv_addr.sin_addr)<=0) {
printf("\nInvalid address/ Address not supported \n");
return "Null";
}
if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
printf("\nConnection Failed \n");
return "Null";
}
send(sock , buff , strlen(buff) , 0 );
printf("Client : message sent\n");
valread = read( sock , buffer, 1024);
return buffer;
}
};
// Implementation to send image and camera id
class AdvancedClient_Reader_Req{
private:
Client cli;
public:
void setup(char* adr, int port){
cli.setup(adr,port);
}
void send_image(char* image_buffer, int camera_id){
cli.send_request((char*) camera_id);
cli.send_request(image_buffer);
}
};
class AdvancedServer_Reader_Req{
private:
Server srv;
public:
void setup(int port){
}
char * listen(){
char * result_image;
return result_image;
}
};