//
// Created by 胡宇 on 2020/7/9.
//

#ifndef NET_TCP_CLIENT_H
#define NET_TCP_CLIENT_H

#include <cstring>
#include <string>
#include <stdexcept>
#include <sstream>

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#include <boost/thread/thread.hpp>

namespace Net {

    class TCPClient {
    public:
        TCPClient(const std::string &ip, int port);

        int sendData(const std::string &data);


    private:
        int fd{};
        struct sockaddr_in client_addr{};

        std::stringstream recv_buff;

        void create_socket_and_connection();

        void recv_cycle();

        static void recv_data(TCPClient *client);
    };

}


#endif //NET_TCP_CLIENT_H