-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhttp_sockets.cpp
More file actions
74 lines (61 loc) · 2.26 KB
/
http_sockets.cpp
File metadata and controls
74 lines (61 loc) · 2.26 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
#include "./headers/http_sockets.h"
#include <arpa/inet.h>
#include <cstdlib>
#include <iostream>
#include <netinet/in.h>
#include <sys/socket.h>
int HttpSocket::createServerSocket() {
// Create server socket
int serverSocket = socket(AF_INET, SOCK_STREAM, 0);
if (serverSocket == -1) {
throw std::runtime_error("Socket creation failed");
}
// Set up server address struct
sockaddr_in serverAddress;
serverAddress.sin_family = AF_INET; // IPv4
serverAddress.sin_port = htons(8080); // Port 8080
serverAddress.sin_addr.s_addr = INADDR_ANY;
// Bind the socket to the address
int binded_value = bind(serverSocket, (struct sockaddr *)&serverAddress,
sizeof(serverAddress));
if (binded_value != 0) {
std::cerr << "Bind error, binded value: " << binded_value << std::endl;
throw std::runtime_error("Socket binding failed");
}
// Listen for incoming connections
int listen_value = listen(serverSocket, 5);
if (listen_value != 0) {
std::cerr << "Listen error, listen value: " << listen_value << std::endl;
throw std::runtime_error("Server failed to listen");
}
return serverSocket;
}
int HttpSocket::createProxySocket(std::string ipaddr, int port) {
// Create server socket
int serverSocket = socket(AF_INET, SOCK_STREAM, 0);
if (serverSocket == -1) {
throw std::runtime_error("Socket creation failed");
}
// Set up server address struct
sockaddr_in serverAddress;
serverAddress.sin_family = AF_INET; // IPv4
serverAddress.sin_port = htons(port);
// convert string into char
const char *ip_addr = ipaddr.c_str();
serverAddress.sin_addr.s_addr = inet_addr(ip_addr);
// Bind the socket to the address
int binded_value = bind(serverSocket, (struct sockaddr *)&serverAddress,
sizeof(serverAddress));
if (binded_value != 0) {
std::cerr << "Bind error, binded value: " << binded_value
<< "port: " << port << std::endl;
throw std::runtime_error("Socket binding failed");
}
// Listen for incoming connections
int listen_value = listen(serverSocket, 5);
if (listen_value != 0) {
std::cerr << "Listen error, listen value: " << listen_value << std::endl;
throw std::runtime_error("Server failed to listen");
}
return serverSocket;
}