From 68826376ee5f47783c644c6604f4411ec747cd7e Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Fri, 14 Nov 2025 23:52:16 +0800
Subject: [PATCH] Add UDP DNS client source code

---
 project/2.socketd/booster/socket.h |  146 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 146 insertions(+), 0 deletions(-)

diff --git a/project/2.socketd/booster/socket.h b/project/2.socketd/booster/socket.h
new file mode 100644
index 0000000..186f390
--- /dev/null
+++ b/project/2.socketd/booster/socket.h
@@ -0,0 +1,146 @@
+/********************************************************************************
+ *      Copyright:  (C) 2022 LingYun IoT System Studio
+ *                  All rights reserved.
+ *
+ *       Filename:  socket.h
+ *    Description:  This head file is for socket API functions
+ *
+ *        Version:  1.0.0(18/04/22)
+ *         Author:  Guo Wenxue <guowenxue@gmail.com>
+ *      ChangeLog:  1, Release initial version on "18/04/22 17:09:59"
+ *
+ ********************************************************************************/
+
+#ifndef  _SOCKET_H_
+#define  _SOCKET_H_
+
+#include <poll.h>
+#include <netdb.h>
+#include <sys/un.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/resource.h>
+#include <sys/epoll.h>
+#include <sys/ioctl.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#include <arpa/inet.h>
+#include <linux/sockios.h>
+
+#define HOSTNAME_LEN          64
+
+typedef struct socket_s
+{
+    char        host[HOSTNAME_LEN]; /* CLIENT: Connect server hostname; SERVER: Unused */
+    int         port;               /* CLIENT: Connect server port;     SERVER: listen port */
+    int         fd;                 /* socket descriptor  */
+    int         connected;          /* socket connect status: 1->connected 0->disconnected  */
+} socket_t;
+
+/*  description: initial socket context
+ *   input args:
+ *               $sock:  socket context pointer
+ *               $host:  connect server hostname for client mode, unused for server mode
+ *               $port:  connect server port for client mode or listen port for server mode
+ * return value: <0: failure   0:ok
+ */
+extern int socket_init(socket_t *sock, char *host, int port);
+
+/*  description: close socket
+ *   input args:
+ *               $sock:  socket context pointer
+ * return value: <0: failure   0:ok
+ */
+extern int socket_term(socket_t *sock);
+
+/*  description: socket server start listen
+ *   input args:
+ *               $sock:  socket context pointer
+ *               $port:  socket listen port
+ * return value: <0: failure   0:ok
+ */
+extern int socket_listen(socket_t *sock, int port);
+
+/*  description: create epoll for socket server and add listenfd into it
+ *   input args: $max_evts:  max events for epoll_create()
+ *               $listenfd:  listen socket fd
+ * return value: <0: failure  >=0: epollfd
+ */
+extern int epoll_init(int max_evts, int listenfd);
+
+/*  description: close epoll
+ *   input args: $epollfd:  epoll fd
+ * return value: void
+ */ 
+extern void epoll_term(int epollfd);
+
+/*  description: add new fd into epoll to monitor
+ *   input args: $epollfd:  epoll fd
+ *               $fd:       socket fd need added into epoll
+ * return value: <0: failure  0: successfully
+ */
+extern int epoll_add(int epollfd, int fd);
+
+/*  description: delete fd from epoll to monitor
+ *   input args: $epollfd:  epoll fd
+ *               $fd:       socket fd need added into epoll
+ * return value: <0: failure  0: successfully
+ */ 
+extern int epoll_del(int epollfd, int fd);
+
+/*  description: check socket connect status
+ *   input args:
+ *               $sock:  socket context pointer
+ * return value: 1: connected   0:disconnected
+ */
+extern int socket_connected(socket_t *sock);
+
+/*  description: socket client connect to server
+ *   input args:
+ *               $sock:  socket context pointer
+ * return value: <0: failure   0:ok
+ */
+extern int socket_connect(socket_t *sock);
+
+/*  description: send data from the socket
+ *   input args:
+ *               $sock :  socket context pointer
+ *               $data :  socket send data
+ *               $bytes:  socket send data bytes
+ * return value: <0: failure   0:ok
+ */
+extern int socket_send(socket_t *sock, char *data, int bytes);
+
+/*  description: receive data from the socket
+ *   input args:
+ *               $sock :  socket context pointer
+ *               $buf  :  socket receive data buffer
+ *               $size :  socket receive data buffer size
+ *               $timeout: receive data time, <=0 will don't timeout
+ * return value: <0: failure   0:ok
+ */
+#define TIMEOUT_NONE       0
+extern int socket_recv(socket_t *sock, char *buf, int size, int timeout);
+
+/*+-------------------------------------------------------------------+
+ *|                socket utils function                              |
+ *+-------------------------------------------------------------------+*/
+
+/* description: set socket listen port as reusable, fix port already used bug  */
+extern int socket_set_reuseaddr(int sockfd);
+
+/* set socket as non-block mode, common socket default work as block mode */
+extern int socket_set_nonblock(int sockfd);
+
+/* set socket receive and send buffer size in linux kernel space */
+extern int socket_set_buffer(int sockfd, int rsize, int ssize);
+
+/* set heartbeat keepalive  */
+extern int socket_set_keepalive(int sockfd, int keepintvl, int keepcnt);
+
+/*  Set open file description count to max */
+extern void set_socket_rlimit(void);
+
+#endif   /* ----- #ifndef _SOCKET_H_  ----- */
+

--
Gitblit v1.9.1