68 struct sockaddr_in s_address;
70 struct sockaddr_in cl_address;
73 size_t pos = path.find(
sep);
76 if (pos == std::string::npos) {
77 address =
"127.0.0.1";
78 port = std::stoi(path);
80 address = path.substr(0, pos);
81 port = std::stoi(path.substr(pos + 1));
84 port = std::stoi(path);
90 if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
92 std::cerr <<
"UWSOCKET::ERROR::" + std::to_string(
local_errno)
97 if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &sockoptval,
100 std::cerr <<
"UWSOCKET::ERROR::" + std::to_string(
local_errno)
105 std::memset(&s_address, 0,
sizeof(s_address));
106 s_address.sin_family = AF_INET;
107 s_address.sin_port = htons(port);
109 if (inet_pton(AF_INET, address.c_str(), &s_address.sin_addr) <= 0) {
111 std::cerr <<
"UWSOCKET::ERROR::" + std::to_string(
local_errno)
116 if (connect(sockfd, (
struct sockaddr *) &s_address,
sizeof(s_address)) <
119 std::cerr <<
"UWSOCKET::ERROR::" + std::to_string(
local_errno)
129 if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
131 std::cerr <<
"UWSOCKET::ERROR::" + std::to_string(
local_errno)
136 if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &sockoptval,
137 sizeof(
int)) == -1) {
139 std::cerr <<
"UWSOCKET::ERROR::" + std::to_string(
local_errno)
144 std::memset(&s_address, 0,
sizeof(s_address));
145 s_address.sin_family = AF_INET;
146 s_address.sin_addr.s_addr = htonl(INADDR_ANY);
147 s_address.sin_port = htons(port);
151 if (bind(sockfd, (
struct sockaddr *) &s_address,
152 sizeof(s_address)) == -1) {
154 std::cerr <<
"UWSOCKET::ERROR::" + std::to_string(
local_errno)
159 if (listen(sockfd, 1) < 0) {
161 std::cerr <<
"UWSOCKET::ERROR::" + std::to_string(
local_errno)
167 len_addr =
sizeof(cl_address);
168 socketfd = accept(sockfd, (
struct sockaddr *) &cl_address,
172 std::cerr <<
"UWSOCKET::ERROR::" +
185 if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
187 std::cerr <<
"UWSOCKET::ERROR::" + std::to_string(
local_errno)
192 if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &sockoptval,
193 sizeof(
int)) == -1) {
195 std::cerr <<
"UWSOCKET::ERROR::" + std::to_string(
local_errno)
200 struct sockaddr_in dest_addr;
203 std::memset(&dest_addr, 0,
sizeof(dest_addr));
204 dest_addr.sin_family = AF_INET;
205 dest_addr.sin_port = htons(port);
206 dest_addr.sin_addr.s_addr = inet_addr(address.c_str());
211 (
const struct sockaddr *) &dest_addr,
222 if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
224 std::cerr <<
"UWSOCKET::ERROR::" + std::to_string(
local_errno)
229 if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &sockoptval,
230 sizeof(
int)) == -1) {
232 std::cerr <<
"UWSOCKET::ERROR::" + std::to_string(
local_errno)
237 struct sockaddr_in my_addr;
240 std::memset(&my_addr, 0,
sizeof(my_addr));
241 my_addr.sin_family = AF_INET;
242 my_addr.sin_port = htons(port);
243 my_addr.sin_addr.s_addr = htonl(INADDR_ANY);
245 if (bind(sockfd, (
struct sockaddr *) &my_addr,
sizeof(my_addr)) <
247 std::cerr <<
"UWSOCKET::ERROR::" + std::to_string(
local_errno)
253 socklen_t addrlen =
sizeof(
cl_addr);
254 char tmp_listen[] = {0};
256 int n_bytes = recvfrom(sockfd, &tmp_listen,
sizeof(tmp_listen), 0,
257 (
struct sockaddr *)&
cl_addr, &addrlen);
259 std::cout <<
"Server connected to client." << std::endl;