geekbrains_network_programming/lesson_03/main.cpp

73 lines
1.5 KiB
C++
Raw Normal View History

/*
* main.cpp
*
* Created on: 5 сент. 2022 г.
* Author: alexander
*/
#include <ap.hpp>
#include <iostream>
#include <server.hpp>
2022-09-07 12:43:34 +00:00
#include <client.hpp>
void print(std::string buffer, zh::ServerTCP &s)
{
std::cout << buffer << std::endl;
}
void stop(std::string buffer, zh::ServerTCP &s)
{
s.stop();
}
void disconnect(std::string buffer, zh::ServerTCP &s)
{
s.disconnect();
}
void server(const int port)
{
zh::ServerTCP tcpServer(port);
tcpServer.registerHook("", print);
tcpServer.registerHook("disconnect", disconnect);
tcpServer.registerHook("stop", stop);
tcpServer.bind();
tcpServer.listen();
}
void client(const int port, const std::string &host)
{
zh::ClientTCP tcpClient(host, port);
tcpClient.connect();
}
int main(int argc, char *argv[])
{
2022-09-07 12:43:34 +00:00
ap::Hub hub({{ "port", 'p', ap::REQUIRED }, { "host", 'h', ap::REQUIRED }});
hub.readArguments(argc, argv);
auto optionPort = hub.getOption('p');
if (!optionPort.isSet())
{
std::cerr << "Порт не был установлен!" << std::endl;
exit(EXIT_FAILURE);
}
2022-09-07 12:43:34 +00:00
auto optionHost = hub.getOption('h');
if (!optionHost.isSet())
{
std::cerr << "Адрес не был установлен!" << std::endl;
exit(EXIT_FAILURE);
}
int port = std::stoi(optionPort.getValues()[0]);
2022-09-07 12:43:34 +00:00
std::string host = optionHost.getValues()[0];
2022-09-07 12:43:34 +00:00
server(port);
// client(port, host);
return 0;
}