//
|
// Created by YY on 2019/9/29.
|
//
|
|
#ifndef RTKBASESTATION_NET_H
|
#define RTKBASESTATION_NET_H
|
|
#include <string>
|
|
enum SERVICE_TYPE {
|
TYPE_SERVER,
|
TYPE_CLIENT
|
};
|
|
class CTcpPort
|
{
|
public:
|
SERVICE_TYPE m_iServiceType;
|
std::string m_sIp;
|
int m_nPort;
|
bool m_connected;
|
|
int m_pServerSocket;
|
int m_pClientSocket;
|
|
public:
|
CTcpPort();
|
virtual ~CTcpPort();
|
|
bool IsOpen(void);
|
bool CloseTcpPort();
|
bool OpenTcpPort(const char *ip, int port);
|
void set_event_callback(void (*callback)(int, void *, void *), void *context);
|
void set_data_callback(void (*callback)(void *, int, void *, void *), void *context);
|
int WriteTCP(const uint8_t * buf, uint32_t len);
|
private:
|
int GetHostIP(const char *host_name, char *net_addr);
|
bool is_domain_name(const char *ip);
|
int socket_set_keepalive(int fd);
|
int tcp_connect(char *ip, uint16_t port);
|
|
void(*event_func)(int, void *, void *); //数据回调函数指针
|
void *event_func_context; //数据回调函数上下文
|
|
void(*receive_data_func)(void *, int, void *, void *); //数据回调函数指针
|
void *receive_data_func_context; //数据回调函数上下文
|
|
static void *TcpConnectThread(void *p);
|
static void *TcpListenThread(void *p);
|
};
|
|
//int WriteTCP(int fd, const uint8_t * buf, uint32_t len);
|
//int ReadTCP(int fd, uint8_t * buf, uint32_t len);
|
//int ConnectTCP(const char *ip, uint16_t port);
|
//void DisconnectTCP(int fd);
|
|
#endif //RTKBASESTATION_NET_H
|