/***************************************************************************** * @copyright 2024-2024, . POWER SUPPLY CO., LTD. * @file drv_tcp_server.h * @brief 驱动文件 * @author Gary * @date 2024/10/19 * @remark 初修订 *****************************************************************************/ #ifndef DRV_TCP_SERVER_H_ #define DRV_TCP_SERVER_H_ #include #include #include #include #include #include "drv_comm.h" #define MAX_SERVER_IP_LEN 32 // 服务器ip地址最大长度 // 连接服务端的客户端结构体 typedef struct { int fd; struct sockaddr_in client; } tcp_client_t; // tcp server驱动结构体 typedef struct { int epoll_fd; // epoll fd int socket_fd; // socket fd uint8_t netId; // NET口对应序号 char ip[MAX_SERVER_IP_LEN]; // ip地址 conn_status_e status; // 连接状态 0:离线, 1:在线 uint32_t port; // 端口号 uint8_t isListen; // 是否已监听: 0否, 1是 tcp_client_t* clients; // 连接服务端的客户端指针 int nClient; // 连接服务端的客户端数量 uint16_t timeout; // 超时时间(milisecond) uint16_t count; // 超时次数 uint32_t send_len; // 发送报文的长度 uint32_t recv_len; // 接收报文的长度 uint8_t send_buf[MAX_TCP_LEN]; // 发送报文缓存 uint8_t recv_buf[MAX_TCP_LEN]; // 接收报文缓存 } tcp_server_lib_t; /***************************************************************************** * @brief 打开tcp驱动 * @param[in] p_tcp: tcp驱动结构体指针 * @return 0-成功 1-失败 *****************************************************************************/ int drvTcpServerOpen(tcp_server_lib_t* p_tcp); /***************************************************************************** * @brief 关闭tcp驱动 * @param[in] p_tcp: tcp驱动结构体指针 * @return 0-成功 1-失败 *****************************************************************************/ int drvTcpServerClose(tcp_server_lib_t* p_tcp); /***************************************************************************** * @brief tcp驱动发送 * @param[in] p_tcp: tcp驱动结构体指针 * @return 0-成功 1-失败 *****************************************************************************/ ssize_t drvTcpServerSend(tcp_server_lib_t* p_tcp); /***************************************************************************** * @brief tcp驱动接收 * @param[in] p_tcp: tcp驱动结构体指针 * @return 0-成功 1-失败 *****************************************************************************/ ssize_t drvTcpServerRecv(tcp_server_lib_t* p_tcp); #endif