Проверка переданных значений

master
const an teen 2021-05-10 11:40:42 +03:00
parent 9359e8824e
commit ccfcaacf6a
3 changed files with 51 additions and 10 deletions

View File

@ -1,20 +1,46 @@
#include <iostream>
#include "tcpsyncclient.h"
void usage(std::string argv)
boost::asio::io_service service;
void usage(std::string path)
{
std::cout << argv << " <address> <port>" << std::endl;
std::cout << "Usage:\n" << path << " <address> <port> <#channel>" << std::endl;
}
int main(int argc, char * argv[])
{
if (argc < 2) usage( std::string(argv[0]));
////// Проверка переданных данных
if (argc < 4) {
usage( std::string(argv[0]));
return -1;
}
boost::asio::io_service service;
std::string address(argv[1]);
std::string port(argv[2]);
std::string channel(argv[3]);
if (argv[3][0] != '#') {
std::cerr << "Incorrect channel name. Maybe '#" << channel << "'?" << std::endl;
return -2;
}
try { // Проверка переданных адрес:порт
boost::asio::ip::tcp::endpoint ep(
boost::asio::ip::address::from_string(
std::string(argv[1])), std::stoi(std::string(argv[2])) );
address), std::stoi(port) );
} catch (boost::system::system_error & err) {
std::cerr << err.what() << ": " << address << " / "
<< port << std::endl;
return -3;
}
////// Начало работы
boost::asio::ip::tcp::endpoint ep(
boost::asio::ip::address::from_string(
address), std::stoi(port) );
TcpSyncClient socket(ep, service, channel);
TcpSyncClient(ep, service);
return 0;
}

View File

@ -1,13 +1,23 @@
#include "tcpsyncclient.h"
TcpSyncClient::TcpSyncClient(boost::asio::ip::tcp::endpoint ep, boost::asio::io_service& service) :
m_ep(ep), m_sock(service)
TcpSyncClient::TcpSyncClient(boost::asio::ip::tcp::endpoint ep, boost::asio::io_service& service,
const std::string channel) : m_started(true), m_ep(ep), m_sock(service),
m_channel(channel)
{
log(ep.address().to_string());
log(ep.port());
log(m_channel);
// m_sock.connect(ep);
bool connectStatus = connect_to_server();
if(!connectStatus) {
log("Connection error");
}
}
bool TcpSyncClient::connect_to_server()
{
m_sock.connect(m_ep);
return true;
}
template <typename T>

View File

@ -15,13 +15,18 @@ using boost::system::error_code;
class TcpSyncClient
{
public:
TcpSyncClient(boost::asio::ip::tcp::endpoint, boost::asio::io_service&);
TcpSyncClient(boost::asio::ip::tcp::endpoint, boost::asio::io_service&, const std::string);
private:
template <typename T>
void log(T);
bool connect_to_server();
size_t read_complete(char*, const error_code&, size_t);
int m_already_read;
bool m_started;
char m_buff[1024]; // Буффер 1Кб
std::string m_channel;
boost::asio::ip::tcp::endpoint m_ep;
boost::asio::ip::tcp::socket m_sock;
};