/****************************************************************************** 版权所有: 文件名称: rt_socket.h 文件版本: 01.01 创建作者: sunxi 创建日期: 2020-06-18 功能说明: 实时微系统网络接口. 其它说明: 修改记录: */ #ifndef _RT_SOCKET_H #define _RT_SOCKET_H /*------------------------------- 头文件 -------------------------------------- */ #if 1 #include #include #else #include #include #endif /*------------------------------- 宏定义 -------------------------------------- */ #define RT_SOCKET_FD #ifdef RT_SOCKET_FD #define RT_SOCKET_ERR (-1) #define RT_SOCKET_ACCEPT_RST (-EAGAIN) #define RT_SOCKET_EBADF (-EBADF) typedef int SOCKET; #else #define RT_SOCKET_ERR NULL #define RT_SOCKET_ACCEPT_RST NULL #define RT_SOCKET_EBADF NULL typedef struct socket *SOCKET; #endif #define RT_LINK_TIMEOUT 3 // 以秒为单位 /*------------------------------ 类型结构 ------------------------------------- */ /*------------------------------ 函数声明 ------------------------------------- */ extern int g_net_num; // 正常的网口数量 int rt_socket_init(void); // 打开关闭 SOCKET rt_socket(int domain, int type, int protocol); int rt_socket_close(SOCKET s); // 连接 SOCKET rt_accept(SOCKET s, struct sockaddr *addr, unsigned int *addr_len); int rt_bind(SOCKET s, struct sockaddr *addr, unsigned int len); int rt_connect(SOCKET s, struct sockaddr *addr, unsigned int len); int rt_listen(SOCKET s, int n); int rt_shutdown(SOCKET s, int how); // 接收发送 int rt_send(SOCKET s, void *buf, int n, int flags); int rt_recv(SOCKET s, void *buf, int n, int flags); int rt_sendto(SOCKET s, void *buf, int n, int flags, struct sockaddr *addr, unsigned int addr_len); int rt_recvfrom(SOCKET s, void *buf, int n, int flags, struct sockaddr *addr, unsigned int *addr_len); // int rt_sendmsg (SOCKET s, struct msghdr *message,int flags); // int rt_recvmsg (SOCKET s, struct msghdr *message, int flags); // 控制 int rt_getsockname(SOCKET s, struct sockaddr *addr, unsigned int *len); int rt_getpeername(SOCKET s, struct sockaddr *addr, unsigned int *len); int rt_getsockopt(SOCKET s, int level, int optname, void *optval, unsigned int *optlen); int rt_setsockopt(SOCKET s, int level, int optname, void *optval, unsigned int optlen); int rt_kernel_sock_ioctl(SOCKET s, int cmd, uint32_t arg); int rt_sockconnected(SOCKET s); int rt_net_set_KeepAlive(SOCKET s, int interval); // int rt_sockioctl(SOCKET s, int cmd, uint32_t arg); int rt_if_up(int index); int rt_if_down(int index); int rt_if_sz2mac(char *sz, unsigned char *mac); int rt_if_mac_set(int index, unsigned char *mac); int rt_if_mac_get(int index, unsigned char *mac); int rt_if_ip_set(int index, unsigned char *ip); int rt_if_ip_get(int index, unsigned char *ip); int rt_if_mask_set(int index, unsigned char *mask); int rt_if_mask_get(int index, unsigned char *mask); int rt_route_add(int index, unsigned char *destination, unsigned char *gateway); int rt_route_del(int index, unsigned char *destination, unsigned char *gateway); int net_if_get(int if_index, unsigned char *mac, unsigned char *ip, unsigned char *mask); int net_gateway_set(unsigned char *gateway); int rt_get_net_linkstatus(int if_index); int rt_get_netcard_id_from_socket(SOCKET s); // 物理网口索引 int net_route_set(unsigned char *routenet, unsigned char *routenetmask, unsigned char *routegate); int net_if_set2(int eth_id, int if_index, unsigned char *mac, unsigned char *ip, unsigned char *mask); int rt_if_ip_get2(int eth_id, int index, unsigned char *ip); int rt_if_down2(int eth_id, int index); int net_if_set(int if_index, unsigned char *mac, unsigned char *ip, unsigned char *mask); int net_if_test(void); int socket_test(void); #endif //_RT_SOCKET_H /*------------------------------ 文件结束 ------------------------------------- */