rt_socket.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. /******************************************************************************
  2. 版权所有:
  3. 文件名称: rt_socket.h
  4. 文件版本: 01.01
  5. 创建作者: sunxi
  6. 创建日期: 2020-06-18
  7. 功能说明: 实时微系统网络接口.
  8. 其它说明:
  9. 修改记录:
  10. */
  11. #ifndef _RT_SOCKET_H
  12. #define _RT_SOCKET_H
  13. /*------------------------------- 头文件 --------------------------------------
  14. */
  15. #if 1
  16. #include <linux/net.h>
  17. #include <linux/in.h>
  18. #else
  19. #include <arpa/inet.h>
  20. #include <netinet/in.h>
  21. #endif
  22. /*------------------------------- 宏定义 --------------------------------------
  23. */
  24. #define RT_SOCKET_FD
  25. #ifdef RT_SOCKET_FD
  26. #define RT_SOCKET_ERR (-1)
  27. #define RT_SOCKET_ACCEPT_RST (-EAGAIN)
  28. #define RT_SOCKET_EBADF (-EBADF)
  29. typedef int SOCKET;
  30. #else
  31. #define RT_SOCKET_ERR NULL
  32. #define RT_SOCKET_ACCEPT_RST NULL
  33. #define RT_SOCKET_EBADF NULL
  34. typedef struct socket * SOCKET;
  35. #endif
  36. #define RT_LINK_TIMEOUT 3 // 以秒为单位
  37. /*------------------------------ 类型结构 -------------------------------------
  38. */
  39. /*------------------------------ 函数声明 -------------------------------------
  40. */
  41. extern int g_net_num; // 正常的网口数量
  42. int rt_socket_init(void);
  43. // 打开关闭
  44. SOCKET rt_socket (int domain, int type, int protocol);
  45. int rt_socket_close (SOCKET s);
  46. //连接
  47. SOCKET rt_accept (SOCKET s, struct sockaddr * addr, unsigned int * addr_len);
  48. int rt_bind (SOCKET s, struct sockaddr * addr, unsigned int len);
  49. int rt_connect (SOCKET s, struct sockaddr * addr, unsigned int len);
  50. int rt_listen (SOCKET s, int n) ;
  51. int rt_shutdown (SOCKET s, int how) ;
  52. //接收发送
  53. int rt_send(SOCKET s, void *buf, int n, int flags);
  54. int rt_recv (SOCKET s, void *buf, int n, int flags);
  55. int rt_sendto (SOCKET s, void *buf, int n,int flags, struct sockaddr * addr, unsigned int addr_len);
  56. int rt_recvfrom (SOCKET s, void * buf, int n, int flags, struct sockaddr * addr, unsigned int * addr_len);
  57. //int rt_sendmsg (SOCKET s, struct msghdr *message,int flags);
  58. //int rt_recvmsg (SOCKET s, struct msghdr *message, int flags);
  59. //控制
  60. int rt_getsockname (SOCKET s, struct sockaddr * addr, unsigned int * len);
  61. int rt_getpeername (SOCKET s, struct sockaddr * addr,unsigned int * len);
  62. int rt_getsockopt (SOCKET s, int level, int optname,void * optval,unsigned int * optlen);
  63. int rt_setsockopt (SOCKET s, int level, int optname, void *optval, unsigned int optlen);
  64. int rt_kernel_sock_ioctl(SOCKET s, int cmd, uint32_t arg);
  65. int rt_sockconnected(SOCKET s) ;
  66. int rt_net_set_KeepAlive(SOCKET s, int interval) ;
  67. //int rt_sockioctl(SOCKET s, int cmd, uint32_t arg);
  68. int rt_if_up(int index);
  69. int rt_if_down(int index);
  70. int rt_if_sz2mac(char *sz, unsigned char *mac);
  71. int rt_if_mac_set(int index, unsigned char *mac);
  72. int rt_if_mac_get(int index, unsigned char *mac);
  73. int rt_if_ip_set(int index, unsigned char * ip);
  74. int rt_if_ip_get(int index, unsigned char *ip);
  75. int rt_if_mask_set(int index, unsigned char * mask);
  76. int rt_if_mask_get(int index, unsigned char *mask);
  77. int rt_route_add(int index,unsigned char * destination,unsigned char *gateway);
  78. int rt_route_del(int index,unsigned char * destination,unsigned char *gateway);
  79. int net_if_get(int if_index,unsigned char *mac,unsigned char *ip,unsigned char *mask);
  80. int net_gateway_set(unsigned char *gateway);
  81. int rt_get_net_linkstatus(int if_index);
  82. int rt_get_netcard_id_from_socket(SOCKET s); // 物理网口索引
  83. int net_route_set(unsigned char *routenet, unsigned char *routenetmask, unsigned char *routegate);
  84. int net_if_set2(int eth_id, int if_index,unsigned char *mac,unsigned char *ip,unsigned char *mask);
  85. int rt_if_ip_get2(int eth_id, int index, unsigned char *ip);
  86. int rt_if_down2(int eth_id, int index);
  87. int net_if_set(int if_index,unsigned char *mac,unsigned char *ip,unsigned char *mask);
  88. int net_if_test(void);
  89. int socket_test(void);
  90. #endif //_RT_SOCKET_H
  91. /*------------------------------ 文件结束 -------------------------------------
  92. */