74 lines
2.9 KiB
C
74 lines
2.9 KiB
C
|
/*****************************************************************************
|
|||
|
* @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 <stdint.h>
|
|||
|
#include <fcntl.h>
|
|||
|
#include <sys/epoll.h>
|
|||
|
#include <sys/select.h>
|
|||
|
#include <arpa/inet.h>
|
|||
|
#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
|