11bd4fe43Sopenharmony_ci/** 21bd4fe43Sopenharmony_ci * @file hi_net_api.h 31bd4fe43Sopenharmony_ci * 41bd4fe43Sopenharmony_ci * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED. 51bd4fe43Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 61bd4fe43Sopenharmony_ci * you may not use this file except in compliance with the License. 71bd4fe43Sopenharmony_ci * You may obtain a copy of the License at 81bd4fe43Sopenharmony_ci * 91bd4fe43Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 101bd4fe43Sopenharmony_ci * 111bd4fe43Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 121bd4fe43Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 131bd4fe43Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 141bd4fe43Sopenharmony_ci * See the License for the specific language governing permissions and 151bd4fe43Sopenharmony_ci * limitations under the License. 161bd4fe43Sopenharmony_ci */ 171bd4fe43Sopenharmony_ci 181bd4fe43Sopenharmony_ci/** 191bd4fe43Sopenharmony_ci * @defgroup hi_net Lwip API 201bd4fe43Sopenharmony_ci */ 211bd4fe43Sopenharmony_ci/** 221bd4fe43Sopenharmony_ci * @defgroup hi_net_basic Lwip Basic Interface 231bd4fe43Sopenharmony_ci * @ingroup hi_net 241bd4fe43Sopenharmony_ci */ 251bd4fe43Sopenharmony_ci 261bd4fe43Sopenharmony_ci#ifndef __HI_NET_API_H__ 271bd4fe43Sopenharmony_ci#define __HI_NET_API_H__ 281bd4fe43Sopenharmony_ci 291bd4fe43Sopenharmony_ci#include <stdint.h> 301bd4fe43Sopenharmony_ci#include <stddef.h> 311bd4fe43Sopenharmony_ci#include <errno.h> 321bd4fe43Sopenharmony_ci 331bd4fe43Sopenharmony_ci#ifdef __cplusplus 341bd4fe43Sopenharmony_ciextern "C" 351bd4fe43Sopenharmony_ci{ 361bd4fe43Sopenharmony_ci#endif 371bd4fe43Sopenharmony_ci 381bd4fe43Sopenharmony_citypedef unsigned char u8_t; 391bd4fe43Sopenharmony_citypedef unsigned short u16_t; 401bd4fe43Sopenharmony_citypedef unsigned int u32_t; 411bd4fe43Sopenharmony_citypedef int err_t; 421bd4fe43Sopenharmony_ci 431bd4fe43Sopenharmony_ci#ifndef LWIP_TIMEVAL_PRIVATE 441bd4fe43Sopenharmony_ci#define LWIP_TIMEVAL_PRIVATE 0 451bd4fe43Sopenharmony_ci#endif 461bd4fe43Sopenharmony_ci 471bd4fe43Sopenharmony_ci/** 481bd4fe43Sopenharmony_ci * @ingroup hi_net_basic 491bd4fe43Sopenharmony_ci * 501bd4fe43Sopenharmony_ci * max length of INET ADDRESS.CNcomment:INET最大的字符串长度。CNend 511bd4fe43Sopenharmony_ci */ 521bd4fe43Sopenharmony_ci#define INET_ADDRSTRLEN 16 531bd4fe43Sopenharmony_ci 541bd4fe43Sopenharmony_ci/** 551bd4fe43Sopenharmony_ci * @ingroup hi_net_basic 561bd4fe43Sopenharmony_ci * 571bd4fe43Sopenharmony_ci * max num of FD.CNcomment:最大的描述符个数。CNend 581bd4fe43Sopenharmony_ci */ 591bd4fe43Sopenharmony_ci#define FD_SETSIZE_MAX 1024 601bd4fe43Sopenharmony_ci 611bd4fe43Sopenharmony_ci#define EPERM 1 /* Operation not permitted */ 621bd4fe43Sopenharmony_ci#define ENOENT 2 /* No such file or directory */ 631bd4fe43Sopenharmony_ci#define ESRCH 3 /* No such process */ 641bd4fe43Sopenharmony_ci#define EINTR 4 /* Interrupted system call */ 651bd4fe43Sopenharmony_ci#define EIO 5 /* I/O error */ 661bd4fe43Sopenharmony_ci#define ENXIO 6 /* No such device or address */ 671bd4fe43Sopenharmony_ci#define E2BIG 7 /* Arg list too long */ 681bd4fe43Sopenharmony_ci#define ENOEXEC 8 /* Exec format error */ 691bd4fe43Sopenharmony_ci#define EBADF 9 /* Bad file number */ 701bd4fe43Sopenharmony_ci#define ECHILD 10 /* No child processes */ 711bd4fe43Sopenharmony_ci#define EAGAIN 11 /* Try again */ 721bd4fe43Sopenharmony_ci#define ENOMEM 12 /* Out of memory */ 731bd4fe43Sopenharmony_ci#define EACCES 13 /* Permission denied */ 741bd4fe43Sopenharmony_ci#define EFAULT 14 /* Bad address */ 751bd4fe43Sopenharmony_ci#define ENOTBLK 15 /* Block device required */ 761bd4fe43Sopenharmony_ci#define EBUSY 16 /* Device or resource busy */ 771bd4fe43Sopenharmony_ci#define EEXIST 17 /* File exists */ 781bd4fe43Sopenharmony_ci#define EXDEV 18 /* Cross-device link */ 791bd4fe43Sopenharmony_ci#define ENODEV 19 /* No such device */ 801bd4fe43Sopenharmony_ci#define ENOTDIR 20 /* Not a directory */ 811bd4fe43Sopenharmony_ci#define EISDIR 21 /* Is a directory */ 821bd4fe43Sopenharmony_ci#define ENFILE 23 /* File table overflow */ 831bd4fe43Sopenharmony_ci#define EMFILE 24 /* Too many open files */ 841bd4fe43Sopenharmony_ci#define ENOTTY 25 /* Not a typewriter */ 851bd4fe43Sopenharmony_ci#define ETXTBSY 26 /* Text file busy */ 861bd4fe43Sopenharmony_ci#define EFBIG 27 /* File too large */ 871bd4fe43Sopenharmony_ci#define ENOSPC 28 /* No space left on device */ 881bd4fe43Sopenharmony_ci#define ESPIPE 29 /* Illegal seek */ 891bd4fe43Sopenharmony_ci#define EROFS 30 /* Read-only file system */ 901bd4fe43Sopenharmony_ci#define EMLINK 31 /* Too many links */ 911bd4fe43Sopenharmony_ci#define EPIPE 32 /* Broken pipe */ 921bd4fe43Sopenharmony_ci#define EDOM 33 /* Math argument out of domain of func */ 931bd4fe43Sopenharmony_ci#define EDEADLK 35 /* Resource deadlock would occur */ 941bd4fe43Sopenharmony_ci#define ENAMETOOLONG 36 /* File name too long */ 951bd4fe43Sopenharmony_ci#define ENOLCK 37 /* No record locks available */ 961bd4fe43Sopenharmony_ci#define ENOSYS 38 /* Function not implemented */ 971bd4fe43Sopenharmony_ci#define ENOTEMPTY 39 /* Directory not empty */ 981bd4fe43Sopenharmony_ci#define ELOOP 40 /* Too many symbolic links encountered */ 991bd4fe43Sopenharmony_ci#define EWOULDBLOCK EAGAIN /* Operation would block */ 1001bd4fe43Sopenharmony_ci#define ENOMSG 42 /* No message of desired type */ 1011bd4fe43Sopenharmony_ci#define EIDRM 43 /* Identifier removed */ 1021bd4fe43Sopenharmony_ci#define ECHRNG 44 /* Channel number out of range */ 1031bd4fe43Sopenharmony_ci#define EL2NSYNC 45 /* Level 2 not synchronized */ 1041bd4fe43Sopenharmony_ci#define EL3HLT 46 /* Level 3 halted */ 1051bd4fe43Sopenharmony_ci#define EL3RST 47 /* Level 3 reset */ 1061bd4fe43Sopenharmony_ci#define ELNRNG 48 /* Link number out of range */ 1071bd4fe43Sopenharmony_ci#define EUNATCH 49 /* Protocol driver not attached */ 1081bd4fe43Sopenharmony_ci#define ENOCSI 50 /* No CSI structure available */ 1091bd4fe43Sopenharmony_ci#define EL2HLT 51 /* Level 2 halted */ 1101bd4fe43Sopenharmony_ci#define EBADE 52 /* Invalid exchange */ 1111bd4fe43Sopenharmony_ci#define EBADR 53 /* Invalid request descriptor */ 1121bd4fe43Sopenharmony_ci#define EXFULL 54 /* Exchange full */ 1131bd4fe43Sopenharmony_ci#define ENOANO 55 /* No anode */ 1141bd4fe43Sopenharmony_ci#define EBADRQC 56 /* Invalid request code */ 1151bd4fe43Sopenharmony_ci#define EBADSLT 57 /* Invalid slot */ 1161bd4fe43Sopenharmony_ci#define EDEADLOCK EDEADLK 1171bd4fe43Sopenharmony_ci#define EBFONT 59 /* Bad font file format */ 1181bd4fe43Sopenharmony_ci#define ENOSTR 60 /* Device not a stream */ 1191bd4fe43Sopenharmony_ci#define ENODATA 61 /* No data available */ 1201bd4fe43Sopenharmony_ci#define ETIME 62 /* Timer expired */ 1211bd4fe43Sopenharmony_ci#define ENOSR 63 /* Out of streams resources */ 1221bd4fe43Sopenharmony_ci#define ENONET 64 /* Machine is not on the network */ 1231bd4fe43Sopenharmony_ci#define ENOPKG 65 /* Package not installed */ 1241bd4fe43Sopenharmony_ci#define EREMOTE 66 /* Object is remote */ 1251bd4fe43Sopenharmony_ci#define ENOLINK 67 /* Link has been severed */ 1261bd4fe43Sopenharmony_ci#define EADV 68 /* Advertise error */ 1271bd4fe43Sopenharmony_ci#define ESRMNT 69 /* Srmount error */ 1281bd4fe43Sopenharmony_ci#define ECOMM 70 /* Communication error on send */ 1291bd4fe43Sopenharmony_ci#define EPROTO 71 /* Protocol error */ 1301bd4fe43Sopenharmony_ci#define EMULTIHOP 72 /* Multihop attempted */ 1311bd4fe43Sopenharmony_ci#define EDOTDOT 73 /* RFS specific error */ 1321bd4fe43Sopenharmony_ci#define EBADMSG 74 /* Not a data message */ 1331bd4fe43Sopenharmony_ci#define EOVERFLOW 75 /* Value too large for defined data type */ 1341bd4fe43Sopenharmony_ci#define ENOTUNIQ 76 /* Name not unique on network */ 1351bd4fe43Sopenharmony_ci#define EBADFD 77 /* File descriptor in bad state */ 1361bd4fe43Sopenharmony_ci#define EREMCHG 78 /* Remote address changed */ 1371bd4fe43Sopenharmony_ci#define ELIBACC 79 /* Can not access a needed shared library */ 1381bd4fe43Sopenharmony_ci#define ELIBBAD 80 /* Accessing a corrupted shared library */ 1391bd4fe43Sopenharmony_ci#define ELIBSCN 81 /* .lib section in a.out corrupted */ 1401bd4fe43Sopenharmony_ci#define ELIBMAX 82 /* Attempting to link in too many shared libraries */ 1411bd4fe43Sopenharmony_ci#define ELIBEXEC 83 /* Cannot exec a shared library directly */ 1421bd4fe43Sopenharmony_ci#define EILSEQ 84 /* Illegal byte sequence */ 1431bd4fe43Sopenharmony_ci#define ERESTART 85 /* Interrupted system call should be restarted */ 1441bd4fe43Sopenharmony_ci#define ESTRPIPE 86 /* Streams pipe error */ 1451bd4fe43Sopenharmony_ci#define EUSERS 87 /* Too many users */ 1461bd4fe43Sopenharmony_ci#define ENOTSOCK 88 /* Socket operation on non-socket */ 1471bd4fe43Sopenharmony_ci#define EDESTADDRREQ 89 /* Destination address required */ 1481bd4fe43Sopenharmony_ci#define EMSGSIZE 90 /* Message too long */ 1491bd4fe43Sopenharmony_ci#define EPROTOTYPE 91 /* Protocol wrong type for socket */ 1501bd4fe43Sopenharmony_ci#define ENOPROTOOPT 92 /* Protocol not available */ 1511bd4fe43Sopenharmony_ci#define EPROTONOSUPPORT 93 /* Protocol not supported */ 1521bd4fe43Sopenharmony_ci#define ESOCKTNOSUPPORT 94 /* Socket type not supported */ 1531bd4fe43Sopenharmony_ci#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */ 1541bd4fe43Sopenharmony_ci#define EPFNOSUPPORT 96 /* Protocol family not supported */ 1551bd4fe43Sopenharmony_ci#define EAFNOSUPPORT 97 /* Address family not supported by protocol */ 1561bd4fe43Sopenharmony_ci#define EADDRINUSE 98 /* Address already in use */ 1571bd4fe43Sopenharmony_ci#define EADDRNOTAVAIL 99 /* Cannot assign requested address */ 1581bd4fe43Sopenharmony_ci#define ENETDOWN 100 /* Network is down */ 1591bd4fe43Sopenharmony_ci#define ENETUNREACH 101 /* Network is unreachable */ 1601bd4fe43Sopenharmony_ci#define ENETRESET 102 /* Network dropped connection because of reset */ 1611bd4fe43Sopenharmony_ci#define ECONNABORTED 103 /* Software caused connection abort */ 1621bd4fe43Sopenharmony_ci#define ECONNRESET 104 /* Connection reset by peer */ 1631bd4fe43Sopenharmony_ci#define ENOBUFS 105 /* No buffer space available */ 1641bd4fe43Sopenharmony_ci#define EISCONN 106 /* Transport endpoint is already connected */ 1651bd4fe43Sopenharmony_ci#define ENOTCONN 107 /* Transport endpoint is not connected */ 1661bd4fe43Sopenharmony_ci#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */ 1671bd4fe43Sopenharmony_ci#define ETOOMANYREFS 109 /* Too many references: cannot splice */ 1681bd4fe43Sopenharmony_ci#define ETIMEDOUT 110 /* Connection timed out */ 1691bd4fe43Sopenharmony_ci#define ECONNREFUSED 111 /* Connection refused */ 1701bd4fe43Sopenharmony_ci#define EHOSTDOWN 112 /* Host is down */ 1711bd4fe43Sopenharmony_ci#define EHOSTUNREACH 113 /* No route to host */ 1721bd4fe43Sopenharmony_ci#define EALREADY 114 /* Operation already in progress */ 1731bd4fe43Sopenharmony_ci#define EINPROGRESS 115 /* Operation now in progress */ 1741bd4fe43Sopenharmony_ci#define ESTALE 116 /* Stale NFS file handle */ 1751bd4fe43Sopenharmony_ci#define EUCLEAN 117 /* Structure needs cleaning */ 1761bd4fe43Sopenharmony_ci#define ENOTNAM 118 /* Not a XENIX named type file */ 1771bd4fe43Sopenharmony_ci#define ENAVAIL 119 /* No XENIX semaphores available */ 1781bd4fe43Sopenharmony_ci#define EISNAM 120 /* Is a named type file */ 1791bd4fe43Sopenharmony_ci#define EREMOTEIO 121 /* Remote I/O error */ 1801bd4fe43Sopenharmony_ci#define EDQUOT 122 /* Quota exceeded */ 1811bd4fe43Sopenharmony_ci#define ENOMEDIUM 123 /* No medium found */ 1821bd4fe43Sopenharmony_ci#define EMEDIUMTYPE 124 /* Wrong medium type */ 1831bd4fe43Sopenharmony_ci 1841bd4fe43Sopenharmony_ci#define SOCK_STREAM 1 1851bd4fe43Sopenharmony_ci#define SOCK_DGRAM 2 1861bd4fe43Sopenharmony_ci#define SOCK_RAW 3 1871bd4fe43Sopenharmony_ci 1881bd4fe43Sopenharmony_ci#define AF_UNSPEC 0 1891bd4fe43Sopenharmony_ci#define AF_INET 2 1901bd4fe43Sopenharmony_ci#define AF_INET6 AF_UNSPEC 1911bd4fe43Sopenharmony_ci#define PF_INET AF_INET 1921bd4fe43Sopenharmony_ci#define PF_INET6 AF_INET6 1931bd4fe43Sopenharmony_ci#define PF_UNSPEC AF_UNSPEC 1941bd4fe43Sopenharmony_ci 1951bd4fe43Sopenharmony_ci#define IPPROTO_IP 0 1961bd4fe43Sopenharmony_ci#define IPPROTO_TCP 6 1971bd4fe43Sopenharmony_ci#define IPPROTO_UDP 17 1981bd4fe43Sopenharmony_ci#define IPPROTO_UDPLITE 136 1991bd4fe43Sopenharmony_ci 2001bd4fe43Sopenharmony_ci#define MSG_PEEK 0x02 2011bd4fe43Sopenharmony_ci#define MSG_WAITALL 0x100 2021bd4fe43Sopenharmony_ci#define MSG_OOB 0x01 2031bd4fe43Sopenharmony_ci#define MSG_DONTWAIT 0x40 2041bd4fe43Sopenharmony_ci#define MSG_MORE 0x8000 2051bd4fe43Sopenharmony_ci 2061bd4fe43Sopenharmony_ci#define SOL_SOCKET 1 2071bd4fe43Sopenharmony_ci#define SO_REUSEADDR 2 2081bd4fe43Sopenharmony_ci#define SO_TYPE 3 2091bd4fe43Sopenharmony_ci#define SO_ERROR 4 2101bd4fe43Sopenharmony_ci#define SO_BROADCAST 6 2111bd4fe43Sopenharmony_ci#define SO_SNDBUF 7 2121bd4fe43Sopenharmony_ci#define SO_RCVBUF 8 2131bd4fe43Sopenharmony_ci#define SO_KEEPALIVE 9 2141bd4fe43Sopenharmony_ci#define SO_NO_CHECK 11 2151bd4fe43Sopenharmony_ci#define SO_SNDLOWAT 19 2161bd4fe43Sopenharmony_ci#define SO_RCVLOWAT 18 2171bd4fe43Sopenharmony_ci#define SO_SNDTIMEO 67 2181bd4fe43Sopenharmony_ci#define SO_RCVTIMEO 66 2191bd4fe43Sopenharmony_ci#define SO_CONTIMEO 0x1009 2201bd4fe43Sopenharmony_ci 2211bd4fe43Sopenharmony_ci 2221bd4fe43Sopenharmony_ci#ifndef O_NONBLOCK 2231bd4fe43Sopenharmony_ci#define O_NONBLOCK 00004000 2241bd4fe43Sopenharmony_ci#endif 2251bd4fe43Sopenharmony_ci 2261bd4fe43Sopenharmony_ci#ifndef O_NDELAY 2271bd4fe43Sopenharmony_ci#define O_NDELAY O_NONBLOCK 2281bd4fe43Sopenharmony_ci#endif 2291bd4fe43Sopenharmony_ci 2301bd4fe43Sopenharmony_ci#ifndef F_GETFL 2311bd4fe43Sopenharmony_ci#define F_GETFL 3 2321bd4fe43Sopenharmony_ci#endif 2331bd4fe43Sopenharmony_ci#ifndef F_SETFL 2341bd4fe43Sopenharmony_ci#define F_SETFL 4 2351bd4fe43Sopenharmony_ci#endif 2361bd4fe43Sopenharmony_ci 2371bd4fe43Sopenharmony_ci#define IP_MULTICAST_TTL 5 2381bd4fe43Sopenharmony_ci#define IP_MULTICAST_IF 6 2391bd4fe43Sopenharmony_ci#define IP_MULTICAST_LOOP 7 2401bd4fe43Sopenharmony_ci#define IP_ADD_MEMBERSHIP 35 2411bd4fe43Sopenharmony_ci#define IP_DROP_MEMBERSHIP 36 2421bd4fe43Sopenharmony_ci 2431bd4fe43Sopenharmony_ci#define IPADDR_NONE ((u32_t)0xffffffffUL) 2441bd4fe43Sopenharmony_ci#define IPADDR_ANY ((u32_t)0x00000000UL) 2451bd4fe43Sopenharmony_ci#define INADDR_ANY IPADDR_ANY 2461bd4fe43Sopenharmony_ci 2471bd4fe43Sopenharmony_ci#define ip4_addr1(ipaddr) (((u8_t*)(ipaddr))[0]) 2481bd4fe43Sopenharmony_ci#define ip4_addr2(ipaddr) (((u8_t*)(ipaddr))[1]) 2491bd4fe43Sopenharmony_ci#define ip4_addr3(ipaddr) (((u8_t*)(ipaddr))[2]) 2501bd4fe43Sopenharmony_ci#define ip4_addr4(ipaddr) (((u8_t*)(ipaddr))[3]) 2511bd4fe43Sopenharmony_ci 2521bd4fe43Sopenharmony_ci#define ip4_addr1_16(ipaddr) ((u16_t)ip4_addr1(ipaddr)) 2531bd4fe43Sopenharmony_ci#define ip4_addr2_16(ipaddr) ((u16_t)ip4_addr2(ipaddr)) 2541bd4fe43Sopenharmony_ci#define ip4_addr3_16(ipaddr) ((u16_t)ip4_addr3(ipaddr)) 2551bd4fe43Sopenharmony_ci#define ip4_addr4_16(ipaddr) ((u16_t)ip4_addr4(ipaddr)) 2561bd4fe43Sopenharmony_ci 2571bd4fe43Sopenharmony_ci/** 2581bd4fe43Sopenharmony_ci * @ingroup hi_net_basic 2591bd4fe43Sopenharmony_ci * 2601bd4fe43Sopenharmony_ci * host Host byte order converted to network byte order.CNcomment:主机序转为网络序。CNend 2611bd4fe43Sopenharmony_ci */ 2621bd4fe43Sopenharmony_ci#define LWIP_PLATFORM_HTONS(_n) ((u16_t)((((_n) & 0xff) << 8) | (((_n) >> 8) & 0xff))) 2631bd4fe43Sopenharmony_ci 2641bd4fe43Sopenharmony_ci/** 2651bd4fe43Sopenharmony_ci * @ingroup hi_net_basic 2661bd4fe43Sopenharmony_ci * 2671bd4fe43Sopenharmony_ci * network bytehost order converted to Host byte order.CNcomment:网络序转为主机序。CNend 2681bd4fe43Sopenharmony_ci */ 2691bd4fe43Sopenharmony_ci#define LWIP_PLATFORM_HTONL(_n) ((u32_t)((((_n) & 0xff) << 24) | (((_n) & 0xff00) << 8) | \ 2701bd4fe43Sopenharmony_ci (((_n) >> 8) & 0xff00) | (((_n) >> 24) & 0xff))) 2711bd4fe43Sopenharmony_ci 2721bd4fe43Sopenharmony_ci/** 2731bd4fe43Sopenharmony_ci * @ingroup hi_net_basic 2741bd4fe43Sopenharmony_ci * 2751bd4fe43Sopenharmony_ci * set ip addr for four address.CNcomment:根据ip四段地址设置相应的值。CNend 2761bd4fe43Sopenharmony_ci */ 2771bd4fe43Sopenharmony_ci#define IP4_ADDR(ipaddr, a, b, c, d) \ 2781bd4fe43Sopenharmony_ci (ipaddr)->addr = ((u32_t)((d) & 0xff) << 24) | \ 2791bd4fe43Sopenharmony_ci ((u32_t)((c) & 0xff) << 16) | \ 2801bd4fe43Sopenharmony_ci ((u32_t)((b) & 0xff) << 8) | \ 2811bd4fe43Sopenharmony_ci (u32_t)((a) & 0xff) 2821bd4fe43Sopenharmony_ci 2831bd4fe43Sopenharmony_ci/***************************************************************************** 2841bd4fe43Sopenharmony_ci* 8、LWIP协议栈bsd socket htons/ntohs/ntohl转换 2851bd4fe43Sopenharmony_ci*****************************************************************************/ 2861bd4fe43Sopenharmony_ci#define htons(x) lwip_htons(x) 2871bd4fe43Sopenharmony_ci#define ntohs(x) lwip_ntohs(x) 2881bd4fe43Sopenharmony_ci#define htonl(x) lwip_htonl(x) 2891bd4fe43Sopenharmony_ci#define ntohl(x) lwip_ntohl(x) 2901bd4fe43Sopenharmony_ci 2911bd4fe43Sopenharmony_ci#define lwip_htons(x) LWIP_PLATFORM_HTONS(x) 2921bd4fe43Sopenharmony_ci#define lwip_ntohs(x) LWIP_PLATFORM_HTONS(x) 2931bd4fe43Sopenharmony_ci#define lwip_htonl(x) LWIP_PLATFORM_HTONL(x) 2941bd4fe43Sopenharmony_ci#define lwip_ntohl(x) LWIP_PLATFORM_HTONL(x) 2951bd4fe43Sopenharmony_ci 2961bd4fe43Sopenharmony_ci/** 2971bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 2981bd4fe43Sopenharmony_ci* @brief Point to decimal.CNcomment:ip地址点分制转为十进制CNend 2991bd4fe43Sopenharmony_ci* 3001bd4fe43Sopenharmony_ci* @par Description: 3011bd4fe43Sopenharmony_ci* Point to decimal.CNcomment:ip地址点分制转为十进制CNend 3021bd4fe43Sopenharmony_ci* 3031bd4fe43Sopenharmony_ci* @attention cp cannot be empty. CNcomment:传入字符串不能为空CNend 3041bd4fe43Sopenharmony_ci* @param the ip addr in string CNcomment:字符串ip地址CNend 3051bd4fe43Sopenharmony_ci* @retval #IPADDR Execute successfully. 3061bd4fe43Sopenharmony_ci* @retval #IPADDR_NONE Execute failed. 3071bd4fe43Sopenharmony_ci* @par NA: 3081bd4fe43Sopenharmony_ci* NA 3091bd4fe43Sopenharmony_ci* @see NULL 3101bd4fe43Sopenharmony_ci 3111bd4fe43Sopenharmony_ci*/ 3121bd4fe43Sopenharmony_ciu32_t ipaddr_addr(const char *cp); 3131bd4fe43Sopenharmony_ci#define inet_addr(cp) ipaddr_addr(cp) 3141bd4fe43Sopenharmony_ci 3151bd4fe43Sopenharmony_ci#if !defined(in_addr_t) && !defined(IN_ADDR_T_DEFINED) 3161bd4fe43Sopenharmony_ci#ifndef _IN_ADDR_T_DECLARED 3171bd4fe43Sopenharmony_citypedef u32_t in_addr_t; 3181bd4fe43Sopenharmony_ci#define _IN_ADDR_T_DECLARED 3191bd4fe43Sopenharmony_ci#endif 3201bd4fe43Sopenharmony_ci#endif 3211bd4fe43Sopenharmony_ci 3221bd4fe43Sopenharmony_ci#if !defined(sa_family_t) && !defined(SA_FAMILY_T_DEFINED) 3231bd4fe43Sopenharmony_citypedef u16_t sa_family_t; 3241bd4fe43Sopenharmony_ci#endif 3251bd4fe43Sopenharmony_ci 3261bd4fe43Sopenharmony_ci#if !defined(in_port_t) && !defined(IN_PORT_T_DEFINED) 3271bd4fe43Sopenharmony_citypedef u16_t in_port_t; 3281bd4fe43Sopenharmony_ci#endif 3291bd4fe43Sopenharmony_ci 3301bd4fe43Sopenharmony_ci#if !defined(socklen_t) && !defined(SOCKLEN_T_DEFINED) 3311bd4fe43Sopenharmony_citypedef u32_t socklen_t; 3321bd4fe43Sopenharmony_ci#endif 3331bd4fe43Sopenharmony_ci 3341bd4fe43Sopenharmony_ci/** 3351bd4fe43Sopenharmony_ci * @ingroup hi_net_basic 3361bd4fe43Sopenharmony_ci * 3371bd4fe43Sopenharmony_ci * ip address in decimal.CNcomment:十进制ip地址CNend 3381bd4fe43Sopenharmony_ci * 3391bd4fe43Sopenharmony_ci */ 3401bd4fe43Sopenharmony_cistruct ip_addr { 3411bd4fe43Sopenharmony_ci u32_t addr; 3421bd4fe43Sopenharmony_ci}; 3431bd4fe43Sopenharmony_ci 3441bd4fe43Sopenharmony_ci/** 3451bd4fe43Sopenharmony_ci * @ingroup hi_net_basic 3461bd4fe43Sopenharmony_ci * 3471bd4fe43Sopenharmony_ci * Package structure ip_addr_t to in_addr.CNcomment:封装结构体in_addr_t到in_addrCNend 3481bd4fe43Sopenharmony_ci * 3491bd4fe43Sopenharmony_ci */ 3501bd4fe43Sopenharmony_cistruct in_addr { 3511bd4fe43Sopenharmony_ci in_addr_t s_addr; 3521bd4fe43Sopenharmony_ci}; 3531bd4fe43Sopenharmony_ci 3541bd4fe43Sopenharmony_ci/** 3551bd4fe43Sopenharmony_ci * @ingroup hi_net_basic 3561bd4fe43Sopenharmony_ci * 3571bd4fe43Sopenharmony_ci * Address form of socket in Internet Environment.CNcomment:internet环境下套接字的地址形式CNend 3581bd4fe43Sopenharmony_ci * 3591bd4fe43Sopenharmony_ci */ 3601bd4fe43Sopenharmony_cistruct sockaddr_in { 3611bd4fe43Sopenharmony_ci sa_family_t sin_family; 3621bd4fe43Sopenharmony_ci in_port_t sin_port; 3631bd4fe43Sopenharmony_ci struct in_addr sin_addr; 3641bd4fe43Sopenharmony_ci#define SIN_ZERO_LEN 8 3651bd4fe43Sopenharmony_ci char sin_zero[SIN_ZERO_LEN]; 3661bd4fe43Sopenharmony_ci}; 3671bd4fe43Sopenharmony_ci 3681bd4fe43Sopenharmony_ci/** 3691bd4fe43Sopenharmony_ci * @ingroup hi_net_basic 3701bd4fe43Sopenharmony_ci * 3711bd4fe43Sopenharmony_ci * General socket address.CNcomment:通用的套接字地址CNend 3721bd4fe43Sopenharmony_ci * 3731bd4fe43Sopenharmony_ci */ 3741bd4fe43Sopenharmony_cistruct sockaddr { 3751bd4fe43Sopenharmony_ci sa_family_t sa_family; 3761bd4fe43Sopenharmony_ci#define SA_DATA_LEN 14 3771bd4fe43Sopenharmony_ci char sa_data[SA_DATA_LEN]; 3781bd4fe43Sopenharmony_ci}; 3791bd4fe43Sopenharmony_ci 3801bd4fe43Sopenharmony_ci/** 3811bd4fe43Sopenharmony_ci * @ingroup hi_net_basic 3821bd4fe43Sopenharmony_ci * 3831bd4fe43Sopenharmony_ci * Multicast address and interface.CNcomment:多播地址和接口CNend 3841bd4fe43Sopenharmony_ci * 3851bd4fe43Sopenharmony_ci */ 3861bd4fe43Sopenharmony_citypedef struct ip_mreq { 3871bd4fe43Sopenharmony_ci struct in_addr imr_multiaddr; 3881bd4fe43Sopenharmony_ci struct in_addr imr_interface; 3891bd4fe43Sopenharmony_ci} ip_mreq; 3901bd4fe43Sopenharmony_ci 3911bd4fe43Sopenharmony_ci/** 3921bd4fe43Sopenharmony_ci * @ingroup hi_net_basic 3931bd4fe43Sopenharmony_ci * 3941bd4fe43Sopenharmony_ci * IPv4 address.CNcomment:ipv4的地址CNend 3951bd4fe43Sopenharmony_ci * 3961bd4fe43Sopenharmony_ci */ 3971bd4fe43Sopenharmony_cistruct ip4_addr { 3981bd4fe43Sopenharmony_ci u32_t addr; 3991bd4fe43Sopenharmony_ci}; 4001bd4fe43Sopenharmony_citypedef struct ip4_addr ip4_addr_t; 4011bd4fe43Sopenharmony_citypedef ip4_addr_t ip_addr_t; 4021bd4fe43Sopenharmony_ci 4031bd4fe43Sopenharmony_ci/** 4041bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 4051bd4fe43Sopenharmony_ci* @brief Network byte order IP address converted to dotted decimal format. 4061bd4fe43Sopenharmony_ci* CNcomment:网络字节序的IP地址转化为点分十进制格式CNend 4071bd4fe43Sopenharmony_ci* 4081bd4fe43Sopenharmony_ci* @par Description: 4091bd4fe43Sopenharmony_ci* Address translation.CNcomment:地址转换CNend 4101bd4fe43Sopenharmony_ci* 4111bd4fe43Sopenharmony_ci* @attention NULL 4121bd4fe43Sopenharmony_ci* @param cp [IN] Type #ip4_addr_t *, Network byte order IP address.CNcomment:点分十进制格式的IP地址CNend 4131bd4fe43Sopenharmony_ci* @param addr [IN] Type #const char *, length of device name.CNcomment:点分十进制ip地址CNend 4141bd4fe43Sopenharmony_ci* 4151bd4fe43Sopenharmony_ci* @retval #1 Excute successfully 4161bd4fe43Sopenharmony_ci* @retval #0 Excute failure 4171bd4fe43Sopenharmony_ci* @par NULL 4181bd4fe43Sopenharmony_ci* 4191bd4fe43Sopenharmony_ci* @see NULL 4201bd4fe43Sopenharmony_ci 4211bd4fe43Sopenharmony_ci*/ 4221bd4fe43Sopenharmony_ciint ip4addr_aton(const char *cp, ip4_addr_t *addr); 4231bd4fe43Sopenharmony_ci#define inet_aton(cp, addr) ip4addr_aton(cp, (ip4_addr_t*)addr) 4241bd4fe43Sopenharmony_ci 4251bd4fe43Sopenharmony_ci/** 4261bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 4271bd4fe43Sopenharmony_ci* @brief Dotted decimal format IP address converted to Network byte order. 4281bd4fe43Sopenharmony_ci* CNcomment:点分十进制的IP地址转化为网络字节序格式CNend 4291bd4fe43Sopenharmony_ci* 4301bd4fe43Sopenharmony_ci* @par Description: 4311bd4fe43Sopenharmony_ci* Address translation.CNcomment:地址转换CNend 4321bd4fe43Sopenharmony_ci* 4331bd4fe43Sopenharmony_ci* @attention NULL 4341bd4fe43Sopenharmony_ci* @param addr [IN] Type #ip4_addr_t *, addr ip address in network order to convert.CNcomment:网络字节序ip地址CNend 4351bd4fe43Sopenharmony_ci* 4361bd4fe43Sopenharmony_ci* @retval #Not NULL Excute successfully 4371bd4fe43Sopenharmony_ci* @retval #NULL Excute failure 4381bd4fe43Sopenharmony_ci* @par NULL 4391bd4fe43Sopenharmony_ci* 4401bd4fe43Sopenharmony_ci* @see NULL 4411bd4fe43Sopenharmony_ci 4421bd4fe43Sopenharmony_ci*/ 4431bd4fe43Sopenharmony_cichar *ip4addr_ntoa(const ip4_addr_t *addr); 4441bd4fe43Sopenharmony_ci#define inet_ntoa(addr) ip4addr_ntoa((ip4_addr_t*)&(addr)) 4451bd4fe43Sopenharmony_ci 4461bd4fe43Sopenharmony_ci 4471bd4fe43Sopenharmony_citypedef void (*dns_found_callback)(const char *name, ip_addr_t *ipaddr, void *callback_arg); 4481bd4fe43Sopenharmony_cierr_t dns_gethostbyname(const char *hostname, ip_addr_t *addr, 4491bd4fe43Sopenharmony_ci dns_found_callback found, void *callback_arg); 4501bd4fe43Sopenharmony_ci 4511bd4fe43Sopenharmony_ci/** 4521bd4fe43Sopenharmony_ci * @ingroup hi_net_basic 4531bd4fe43Sopenharmony_ci * 4541bd4fe43Sopenharmony_ci * Domain name and network address structure.CNcomment:域名和网络地址结构体CNend 4551bd4fe43Sopenharmony_ci * 4561bd4fe43Sopenharmony_ci */ 4571bd4fe43Sopenharmony_cistruct hostent { 4581bd4fe43Sopenharmony_ci char *h_name; /**< Indicates the official name of the host. */ 4591bd4fe43Sopenharmony_ci char **h_aliases; /**< Indicates a pointer to an array of pointers to alternative host names, 4601bd4fe43Sopenharmony_ci terminated by a null pointer. */ 4611bd4fe43Sopenharmony_ci int h_addrtype; /**< Indicates the address type. */ 4621bd4fe43Sopenharmony_ci int h_length; /**< Indicates the length, in bytes, of the address. */ 4631bd4fe43Sopenharmony_ci char **h_addr_list; /**< Indicates a pointer to an array of pointers to network addresses (in 4641bd4fe43Sopenharmony_ci network byte order) for the host, terminated by a null pointer. */ 4651bd4fe43Sopenharmony_ci#define h_addr h_addr_list[0] /* for backward compatibility */ 4661bd4fe43Sopenharmony_ci}; 4671bd4fe43Sopenharmony_ci 4681bd4fe43Sopenharmony_ci/** 4691bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 4701bd4fe43Sopenharmony_ci* @brief Get IP address according to domain name.CNcomment:根据域名获取IP地址CNend 4711bd4fe43Sopenharmony_ci* 4721bd4fe43Sopenharmony_ci* @par Description: 4731bd4fe43Sopenharmony_ci* The IP address is obtained by using the domain name in string format, 4741bd4fe43Sopenharmony_ci* and the address information is loaded into the host domain name structure 4751bd4fe43Sopenharmony_ci* CNcomment:利用字符串格式的域名获得IP地址,并且将地址信息装入hostent域名结构体CNend 4761bd4fe43Sopenharmony_ci* 4771bd4fe43Sopenharmony_ci* @attention NULL 4781bd4fe43Sopenharmony_ci* @param name [IN] Type #const char * the hostname to resolve.CNcomment:解析的域名CNend 4791bd4fe43Sopenharmony_ci* 4801bd4fe43Sopenharmony_ci* @retval #hostent Execute successfully. 4811bd4fe43Sopenharmony_ci* @retval #NULL Execute failed. 4821bd4fe43Sopenharmony_ci* @par Dependency: 4831bd4fe43Sopenharmony_ci* #NULL 4841bd4fe43Sopenharmony_ci* @see NULL 4851bd4fe43Sopenharmony_ci*/ 4861bd4fe43Sopenharmony_cistruct hostent *gethostbyname(const char *name); 4871bd4fe43Sopenharmony_ci 4881bd4fe43Sopenharmony_ci/** 4891bd4fe43Sopenharmony_ci * @ingroup hi_net_basic 4901bd4fe43Sopenharmony_ci * 4911bd4fe43Sopenharmony_ci * Network interface structure.CNcomment:网络接口结构体CNend 4921bd4fe43Sopenharmony_ci * 4931bd4fe43Sopenharmony_ci */ 4941bd4fe43Sopenharmony_cistruct netif { 4951bd4fe43Sopenharmony_ci#define NETIF_DATA_LEN 8 4961bd4fe43Sopenharmony_ci unsigned char data[NETIF_DATA_LEN]; 4971bd4fe43Sopenharmony_ci}; 4981bd4fe43Sopenharmony_ci 4991bd4fe43Sopenharmony_ci/** 5001bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 5011bd4fe43Sopenharmony_ci* @brief Get the corresponding interface pointer according to the interface name. 5021bd4fe43Sopenharmony_ci* CNcomment:根据接口名字获取相应接口指针CNend 5031bd4fe43Sopenharmony_ci* 5041bd4fe43Sopenharmony_ci* @par Description: 5051bd4fe43Sopenharmony_ci* Get the corresponding interface pointer according to the interface name 5061bd4fe43Sopenharmony_ci* CNcomment:根据接口名字获取相应接口指针CNend 5071bd4fe43Sopenharmony_ci* 5081bd4fe43Sopenharmony_ci* @attention NULL 5091bd4fe43Sopenharmony_ci* @param name [IN] Type #const char * the interface name to find.CNcomment:要找的接口名字CNend 5101bd4fe43Sopenharmony_ci* 5111bd4fe43Sopenharmony_ci* @retval #struct netif * Execute successfully. 5121bd4fe43Sopenharmony_ci* @retval #NULL Execute failed. 5131bd4fe43Sopenharmony_ci* @par Dependency: 5141bd4fe43Sopenharmony_ci* #NULL 5151bd4fe43Sopenharmony_ci* @see NULL 5161bd4fe43Sopenharmony_ci*/ 5171bd4fe43Sopenharmony_cistruct netif *netif_find(const char *name); 5181bd4fe43Sopenharmony_ci 5191bd4fe43Sopenharmony_ci/** 5201bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 5211bd4fe43Sopenharmony_ci* @brief Start DHCP client according to interface.CNcomment:根据接口启动dhcp客户端CNend 5221bd4fe43Sopenharmony_ci* 5231bd4fe43Sopenharmony_ci* @par Description: 5241bd4fe43Sopenharmony_ci* Start DHCP client according to interface 5251bd4fe43Sopenharmony_ci* CNcomment:根据接口启动dhcp客户端CNend 5261bd4fe43Sopenharmony_ci* 5271bd4fe43Sopenharmony_ci* @attention NULL 5281bd4fe43Sopenharmony_ci* @param netif [IN] Type #struct netif * Interface address.CNcomment:接口地址CNend 5291bd4fe43Sopenharmony_ci* 5301bd4fe43Sopenharmony_ci* @retval #ERR_OK Execute successfully. 5311bd4fe43Sopenharmony_ci* @retval #OTHERS Execute failed. 5321bd4fe43Sopenharmony_ci* @par Dependency: 5331bd4fe43Sopenharmony_ci* #NULL 5341bd4fe43Sopenharmony_ci* @see NULL 5351bd4fe43Sopenharmony_ci*/ 5361bd4fe43Sopenharmony_cierr_t netifapi_dhcp_start(struct netif *netif); 5371bd4fe43Sopenharmony_ci 5381bd4fe43Sopenharmony_ci/** 5391bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 5401bd4fe43Sopenharmony_ci* @brief Start DHCP server according to interface.CNcomment:根据接口启动dhcp服务端CNend 5411bd4fe43Sopenharmony_ci* 5421bd4fe43Sopenharmony_ci* @par Description: 5431bd4fe43Sopenharmony_ci* Start DHCP server according to interface 5441bd4fe43Sopenharmony_ci* CNcomment:根据接口启动dhcp服务端CNend 5451bd4fe43Sopenharmony_ci* 5461bd4fe43Sopenharmony_ci* @attention NULL 5471bd4fe43Sopenharmony_ci* @param netif [IN] Type #struct netif * Interface address.CNcomment:接口地址CNend 5481bd4fe43Sopenharmony_ci* @param start_ip [IN] Type #char * Assigned client start address.CNcomment:分配的客户端起始地址CNend 5491bd4fe43Sopenharmony_ci* @param ip_num [IN] Type #u16_t Total number of clients assigned.CNcomment:分配的客户端总数目CNend 5501bd4fe43Sopenharmony_ci* @retval #ERR_OK Execute successfully. 5511bd4fe43Sopenharmony_ci* @retval #OTHERS Execute failed. 5521bd4fe43Sopenharmony_ci* @par Dependency: 5531bd4fe43Sopenharmony_ci* #NULL 5541bd4fe43Sopenharmony_ci* @see NULL 5551bd4fe43Sopenharmony_ci 5561bd4fe43Sopenharmony_ci*/ 5571bd4fe43Sopenharmony_cierr_t netifapi_dhcps_start(struct netif *netif, char *start_ip, u16_t ip_num); 5581bd4fe43Sopenharmony_ci 5591bd4fe43Sopenharmony_ci/** 5601bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 5611bd4fe43Sopenharmony_ci* @brief This API is used to set the the vendor class identifier information 5621bd4fe43Sopenharmony_ci* of the netif, which is using in DHCP Message. 5631bd4fe43Sopenharmony_ci* CNcomment:这个API用来设置dhcp的hostname消息CNend 5641bd4fe43Sopenharmony_ci* 5651bd4fe43Sopenharmony_ci* @par Description: 5661bd4fe43Sopenharmony_ci* The hostname string lenght should be less than NETIF_HOSTNAME_MAX_LEN, 5671bd4fe43Sopenharmony_ci* otherwise the hostname will truncate to (NETIF_HOSTNAME_MAX_LEN-1). 5681bd4fe43Sopenharmony_ci* CNcomment:hostname的长度要小于NETIF_HOSTNAME_MAX_LEN,否则会被设置为(NETIF_HOSTNAME_MAX_LEN-1)CNend 5691bd4fe43Sopenharmony_ci* 5701bd4fe43Sopenharmony_ci* @attention NULL 5711bd4fe43Sopenharmony_ci* @param netif [IN] Type #struct netif * Interface address.CNcomment:接口地址CNend 5721bd4fe43Sopenharmony_ci* @param hostname [IN] Type #char * hostname The new hostname to use.CNcomment:传入使用的名字CNend 5731bd4fe43Sopenharmony_ci* @param namelen [IN] Type #u8_t The hostname string length.CNcomment:名称长度CNend 5741bd4fe43Sopenharmony_ci* @retval #ERR_OK Execute successfully. 5751bd4fe43Sopenharmony_ci* @retval #ERR_ARG: On passing invalid arguments. 5761bd4fe43Sopenharmony_ci* @par Dependency: 5771bd4fe43Sopenharmony_ci* #NULL 5781bd4fe43Sopenharmony_ci* @see NULL 5791bd4fe43Sopenharmony_ci*/ 5801bd4fe43Sopenharmony_cierr_t netifapi_set_hostname(struct netif *netif, char *hostname, u8_t namelen); 5811bd4fe43Sopenharmony_ci 5821bd4fe43Sopenharmony_ci 5831bd4fe43Sopenharmony_ci/** 5841bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 5851bd4fe43Sopenharmony_ci* @brief This API is used to set the vendor class identifier information, which is used in DHCP message. 5861bd4fe43Sopenharmony_ci* CNcomment:设置dhcp消息的vci信息CNend 5871bd4fe43Sopenharmony_ci* 5881bd4fe43Sopenharmony_ci* @par Description: 5891bd4fe43Sopenharmony_ci* Length of vendor class identifier information string ,should be not more than DHCP_VCI_MAX_LEN(default 32), 5901bd4fe43Sopenharmony_ci* otherwise it will return with ERR_ARG. vci_len is the real length of vendor class identifier information string. 5911bd4fe43Sopenharmony_ci* CNcomment:vci消息长度不超过32个字节,否则会返回ERR_ARG,vci_len是厂商分类信息的真实长度CNend 5921bd4fe43Sopenharmony_ci* 5931bd4fe43Sopenharmony_ci* @attention NULL 5941bd4fe43Sopenharmony_ci* @param vci [IN] Type #char * The new vendor class identifier information to use.CNcomment:厂商设备信息数据CNend 5951bd4fe43Sopenharmony_ci* @param vci_len [IN] Type #u8_t The length of vendor class identifier information string.CNcomment:上述数据的长度CNend 5961bd4fe43Sopenharmony_ci* @retval #ERR_OK On success 5971bd4fe43Sopenharmony_ci* @retval #ERR_ARG On passing invalid arguments 5981bd4fe43Sopenharmony_ci* @retval #ERR_VAL On failure 5991bd4fe43Sopenharmony_ci* @par Dependency: 6001bd4fe43Sopenharmony_ci* #NULL 6011bd4fe43Sopenharmony_ci* @see NULL 6021bd4fe43Sopenharmony_ci*/ 6031bd4fe43Sopenharmony_cierr_t netifapi_set_vci(char *vci, u8_t vci_len); 6041bd4fe43Sopenharmony_ci 6051bd4fe43Sopenharmony_ci/** 6061bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 6071bd4fe43Sopenharmony_ci* @brief allocate a socket.CNcomment:分配套接字CNend 6081bd4fe43Sopenharmony_ci* 6091bd4fe43Sopenharmony_ci* @par Description: 6101bd4fe43Sopenharmony_ci* It creates an endpoint for communication and returns a file descriptor 6111bd4fe43Sopenharmony_ci* CNcomment:为通信创建一个端点并返回一个文件描述符CNend 6121bd4fe43Sopenharmony_ci* 6131bd4fe43Sopenharmony_ci* @attention NULL 6141bd4fe43Sopenharmony_ci* @param domain [IN] Type #int Specifies a protocol family.CNcomment:指定协议族CNend 6151bd4fe43Sopenharmony_ci* @param type [IN] Type #int Specifies the socket type.CNcomment:指定协议类型CNend 6161bd4fe43Sopenharmony_ci* @param protocol [IN] Type #int Specifies the protocol to be used with the socket. 6171bd4fe43Sopenharmony_ci* CNcomment:指定要与套接字一起使用的协议CNend 6181bd4fe43Sopenharmony_ci* @retval #>0 Execute successfully. 6191bd4fe43Sopenharmony_ci* @retval #-1 Execute failed. 6201bd4fe43Sopenharmony_ci* @par Dependency: 6211bd4fe43Sopenharmony_ci* #NULL 6221bd4fe43Sopenharmony_ci* @see NULL 6231bd4fe43Sopenharmony_ci*/ 6241bd4fe43Sopenharmony_ciint socket(int domain, int type, int protocol); 6251bd4fe43Sopenharmony_ci 6261bd4fe43Sopenharmony_ci/** 6271bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 6281bd4fe43Sopenharmony_ci* @brief bind a socket.CNcomment:绑定套接字CNend 6291bd4fe43Sopenharmony_ci* 6301bd4fe43Sopenharmony_ci* @par Description: 6311bd4fe43Sopenharmony_ci* It creates an endpoint for communication and returns a file descriptor 6321bd4fe43Sopenharmony_ci* CNcomment:为通信创建一个端点并返回一个文件描述符CNend 6331bd4fe43Sopenharmony_ci* 6341bd4fe43Sopenharmony_ci* @attention NULL 6351bd4fe43Sopenharmony_ci* @param s [IN] Type #int Specifies the file descriptor of the socket to be bound.CNcomment:要绑定的描述符CNend 6361bd4fe43Sopenharmony_ci* @param name [IN] Type #struct sockaddr * Points to a sockaddr structure containing the address 6371bd4fe43Sopenharmony_ci* to be bound to the socket. CNcomment:指向包含要绑定到套接字的地址的sockaddr结构CNend 6381bd4fe43Sopenharmony_ci* @param namelen [IN] Type #socklen_t Specifies the length of the sockaddr structure pointed to by the address argument. 6391bd4fe43Sopenharmony_ci* CNcomment:指定address参数指向的sockaddr结构的长度CNend 6401bd4fe43Sopenharmony_ci* @retval #0 Execute successfully. 6411bd4fe43Sopenharmony_ci* @retval #-1 Execute failed. 6421bd4fe43Sopenharmony_ci* @par Dependency: 6431bd4fe43Sopenharmony_ci* #NULL 6441bd4fe43Sopenharmony_ci* @see NULL 6451bd4fe43Sopenharmony_ci*/ 6461bd4fe43Sopenharmony_ciint bind(int s, const struct sockaddr *name, socklen_t namelen); 6471bd4fe43Sopenharmony_ci 6481bd4fe43Sopenharmony_ci/** 6491bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 6501bd4fe43Sopenharmony_ci* @brief Get socket optional fields.CNcomment:获取套接字可选字段CNend 6511bd4fe43Sopenharmony_ci* 6521bd4fe43Sopenharmony_ci* @par Description: 6531bd4fe43Sopenharmony_ci* Get socket optional fields 6541bd4fe43Sopenharmony_ci* CNcomment:获取套接字可选字段CNend 6551bd4fe43Sopenharmony_ci* 6561bd4fe43Sopenharmony_ci* @attention NULL 6571bd4fe43Sopenharmony_ci* @param socket [IN] Type #int Specifies a socket file descriptor.CNcomment:指定的文件描述符CNend 6581bd4fe43Sopenharmony_ci* @param level [IN] Type #int Specifies the protocol level at which the option resides. 6591bd4fe43Sopenharmony_ci* CNcomment:指定选项所在的协议级别CNend 6601bd4fe43Sopenharmony_ci* @param option_name [IN] Type #int Specifies a single option to set.CNcomment:指定选项的名字CNend 6611bd4fe43Sopenharmony_ci* @param option_value [OUT] Type #void * Indicates the pointer to the option value.CNcomment:指示指向选项值的指针CNend 6621bd4fe43Sopenharmony_ci* @param option_len [IN] Type #socklen_t * Specifies the size of option value.CNcomment:指定选项的值CNend 6631bd4fe43Sopenharmony_ci* @retval #0 Execute successfully. 6641bd4fe43Sopenharmony_ci* @retval #-1 Execute failed. 6651bd4fe43Sopenharmony_ci* @par Dependency: 6661bd4fe43Sopenharmony_ci* #NULL 6671bd4fe43Sopenharmony_ci* @see NULL 6681bd4fe43Sopenharmony_ci*/ 6691bd4fe43Sopenharmony_ciint getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen); 6701bd4fe43Sopenharmony_ci 6711bd4fe43Sopenharmony_ci/** 6721bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 6731bd4fe43Sopenharmony_ci* @brief Set socket optional fields.CNcomment:设置套接字可选字段CNend 6741bd4fe43Sopenharmony_ci* 6751bd4fe43Sopenharmony_ci* @par Description: 6761bd4fe43Sopenharmony_ci* Set socket optional fields 6771bd4fe43Sopenharmony_ci* CNcomment:设置套接字可选字段CNend 6781bd4fe43Sopenharmony_ci* 6791bd4fe43Sopenharmony_ci* @attention NULL 6801bd4fe43Sopenharmony_ci* @param socket [IN] Type #int Specifies a socket file descriptor.CNcomment:指定的文件描述符CNend 6811bd4fe43Sopenharmony_ci* @param level [IN] Type #int Specifies the protocol level at which the option resides. 6821bd4fe43Sopenharmony_ci* CNcomment:指定选项所在的协议级别CNend 6831bd4fe43Sopenharmony_ci* @param option_name [IN] Type #int Specifies a single option to set.CNcomment:指定选项的名字CNend 6841bd4fe43Sopenharmony_ci* @param option_value [OUT] Type #void * Indicates the pointer to the option value.CNcomment:指示指向选项值的指针CNend 6851bd4fe43Sopenharmony_ci* @param option_len [IN] Type #socklen_t Specifies the size of option value.CNcomment:指定选项的值CNend 6861bd4fe43Sopenharmony_ci* @retval #0 Execute successfully. 6871bd4fe43Sopenharmony_ci* @retval #-1 Execute failed. 6881bd4fe43Sopenharmony_ci* @par Dependency: 6891bd4fe43Sopenharmony_ci* #NULL 6901bd4fe43Sopenharmony_ci* @see NULL 6911bd4fe43Sopenharmony_ci*/ 6921bd4fe43Sopenharmony_ciint setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen); 6931bd4fe43Sopenharmony_ci 6941bd4fe43Sopenharmony_ci/** 6951bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 6961bd4fe43Sopenharmony_ci* @brief Accepts a new connection on a socket.CNcomment:套接字上接收一个连接CNend 6971bd4fe43Sopenharmony_ci* 6981bd4fe43Sopenharmony_ci* @par Description: 6991bd4fe43Sopenharmony_ci* Accepts a new connection on a socket 7001bd4fe43Sopenharmony_ci* CNcomment:套接字上接收一个连接CNend 7011bd4fe43Sopenharmony_ci* 7021bd4fe43Sopenharmony_ci* @attention NULL 7031bd4fe43Sopenharmony_ci* @param socket [IN] Type #int Specifies a socket that was created with socket(),has been bound to an address 7041bd4fe43Sopenharmony_ci* with bind(),and has issued a successful call to listen(). 7051bd4fe43Sopenharmony_ci* CNcomment:指定用socket()创建的套接字,该套接字已bind()绑定,并已成功调用listen()CNend 7061bd4fe43Sopenharmony_ci* @param address [OUT] Type #struct sockaddr * Indicates either a null pointer, or a pointer to a sockaddr structure 7071bd4fe43Sopenharmony_ci* where the address of the connecting socket shall be returned. 7081bd4fe43Sopenharmony_ci* CNcomment:指示空指针或指向sockaddr结构的指针,其中应返回连接套接字的地址CNend 7091bd4fe43Sopenharmony_ci* @param address_len [IN,OUT] Type #socklen_t * Indicates either a null pointer,if address is a null pointer, 7101bd4fe43Sopenharmony_ci* or a pointer to a socklen_t object which on input 7111bd4fe43Sopenharmony_ci* specifies the length of the supplied sockaddr structure,and on output specifies 7121bd4fe43Sopenharmony_ci* the length of the stored address. 7131bd4fe43Sopenharmony_ci* CNcomment:如果地址是空指针,则指示空指针,或者指示指向socklen_t对象的指针, 7141bd4fe43Sopenharmony_ci* 该对象在输入时指定提供的sockaddr结构的长度,在输出时指定存储地址的长度.CNend 7151bd4fe43Sopenharmony_ci* @retval #>0 Execute successfully. 7161bd4fe43Sopenharmony_ci* @retval #-1 Execute failed. 7171bd4fe43Sopenharmony_ci* @par Dependency: 7181bd4fe43Sopenharmony_ci* #NULL 7191bd4fe43Sopenharmony_ci* @see NULL 7201bd4fe43Sopenharmony_ci*/ 7211bd4fe43Sopenharmony_ciint accept(int s, struct sockaddr *addr, socklen_t *addrlen); 7221bd4fe43Sopenharmony_ci 7231bd4fe43Sopenharmony_ci/** 7241bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 7251bd4fe43Sopenharmony_ci* @brief Connection to peer IP address.CNcomment:连接对端IP地址CNend 7261bd4fe43Sopenharmony_ci* 7271bd4fe43Sopenharmony_ci* @par Description: 7281bd4fe43Sopenharmony_ci* attempt to make a connection on a connection-mode socket or to set or 7291bd4fe43Sopenharmony_ci* reset the peer address of a connectionless-mode socket 7301bd4fe43Sopenharmony_ci* CNcomment:尝试在连接模式套接字上建立连接,或设置或重置无连接模式套接字的对等地址CNend 7311bd4fe43Sopenharmony_ci* 7321bd4fe43Sopenharmony_ci* @attention NULL 7331bd4fe43Sopenharmony_ci* @param s [IN] Type #int Specifies a socket file descriptor.CNcomment:指定套接字CNend 7341bd4fe43Sopenharmony_ci* @param name [IN] Type #struct sockaddr * Specifies a pointer to the sockaddr structure 7351bd4fe43Sopenharmony_ci* which identifies the connection. CNcomment:指定指向sockaddr结构的指针,该结构标识连接CNend 7361bd4fe43Sopenharmony_ci* @param namelen [IN] Type # socklen_t Specifies the size of name structure. 7371bd4fe43Sopenharmony_ci* CNcomment:指定名字结构体的长度CNend 7381bd4fe43Sopenharmony_ci* @retval #0 Execute successfully. 7391bd4fe43Sopenharmony_ci* @retval #-1 Execute failed. 7401bd4fe43Sopenharmony_ci* @par Dependency: 7411bd4fe43Sopenharmony_ci* #NULL 7421bd4fe43Sopenharmony_ci* @see NULL 7431bd4fe43Sopenharmony_ci*/ 7441bd4fe43Sopenharmony_ciint connect(int s, const struct sockaddr *name, socklen_t namelen); 7451bd4fe43Sopenharmony_ci 7461bd4fe43Sopenharmony_ci/** 7471bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 7481bd4fe43Sopenharmony_ci* @brief Recieve a message from connected socket.CNcomment:从已经连接的套接字接收消息CNend 7491bd4fe43Sopenharmony_ci* 7501bd4fe43Sopenharmony_ci* @par Description: 7511bd4fe43Sopenharmony_ci* Recieve a message from connected socket. 7521bd4fe43Sopenharmony_ci* CNcomment:从已经连接的套接字接收消息CNend 7531bd4fe43Sopenharmony_ci* 7541bd4fe43Sopenharmony_ci* @attention NULL 7551bd4fe43Sopenharmony_ci* @param socket [IN] Type #int Specifies the socket file descriptor.CNcomment:指定套接字CNend 7561bd4fe43Sopenharmony_ci* @param buffer [OUT] Type #void * Points to a buffer where the message should be stored. 7571bd4fe43Sopenharmony_ci* CNcomment:接收存储的缓存CNend 7581bd4fe43Sopenharmony_ci* @param length [IN] Type #size_t Specifies the length in bytes of the buffer pointed to by the buffer argument. 7591bd4fe43Sopenharmony_ci* CNcomment:每次接收的长度CNend 7601bd4fe43Sopenharmony_ci* @param flags [IN] Type #int Specifies the type of message reception.CNcomment:指定套接字的标志位CNend 7611bd4fe43Sopenharmony_ci* @retval #>0 Execute successfully. 7621bd4fe43Sopenharmony_ci* @retval #-1 Execute failed. 7631bd4fe43Sopenharmony_ci* @par Dependency: 7641bd4fe43Sopenharmony_ci* #NULL 7651bd4fe43Sopenharmony_ci* @see NULL 7661bd4fe43Sopenharmony_ci*/ 7671bd4fe43Sopenharmony_ciint recv(int s, void *mem, size_t len, int flags); 7681bd4fe43Sopenharmony_ci 7691bd4fe43Sopenharmony_ci/** 7701bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 7711bd4fe43Sopenharmony_ci* @brief Recieve a message from connected socket.CNcomment:从已经连接的套接字接收消息CNend 7721bd4fe43Sopenharmony_ci* 7731bd4fe43Sopenharmony_ci* @par Description: 7741bd4fe43Sopenharmony_ci* Recieve a message from connected socket. 7751bd4fe43Sopenharmony_ci* CNcomment:从已经连接的套接字接收消息CNend 7761bd4fe43Sopenharmony_ci* 7771bd4fe43Sopenharmony_ci* @attention NULL 7781bd4fe43Sopenharmony_ci* @param socket [IN] Type #int Specifies the socket file descriptor.CNcomment:指定套接字CNend 7791bd4fe43Sopenharmony_ci* @param buffer [OUT] Type #void * Points to a buffer where the message should be stored. 7801bd4fe43Sopenharmony_ci* CNcomment:接收存储的缓存CNend 7811bd4fe43Sopenharmony_ci* @param length [IN] Type #size_t Specifies the length in bytes of the buffer pointed to 7821bd4fe43Sopenharmony_ci* by the buffer argument.CNcomment:每次接收的长度CNend 7831bd4fe43Sopenharmony_ci* @param flags [IN] Type #int Specifies the type of message reception.CNcomment:指定套接字的标志位CNend 7841bd4fe43Sopenharmony_ci* @param flags [IN] Type #struct sockaddr * A null pointer, or points to a sockaddr structure in which 7851bd4fe43Sopenharmony_ci* the sending address is to be stored. 7861bd4fe43Sopenharmony_ci* CNcomment:空指针,或指向要存储发送地址的sockaddr结构CNend 7871bd4fe43Sopenharmony_ci* @param flags [IN] Type #socklen_t * Either a null pointer, if address is a null pointer, or a pointer 7881bd4fe43Sopenharmony_ci* to a socklen_t objectwhich on input specifies the length of the supplied sockaddr structure, 7891bd4fe43Sopenharmony_ci* and on output specifies the length of the stored address. 7901bd4fe43Sopenharmony_ci* CNcomment:如果地址是空指针,则为空指针,或者指向socklen_t对象的指针, 7911bd4fe43Sopenharmony_ci* 该对象在输入时指定提供的sockaddr结构的长度,在输出时指定存储地址的长度CNend 7921bd4fe43Sopenharmony_ci* @retval #>0 Execute successfully. 7931bd4fe43Sopenharmony_ci* @retval #-1 Execute failed. 7941bd4fe43Sopenharmony_ci* @par Dependency: 7951bd4fe43Sopenharmony_ci* #NULL 7961bd4fe43Sopenharmony_ci* @see NULL 7971bd4fe43Sopenharmony_ci*/ 7981bd4fe43Sopenharmony_ciint recvfrom(int s, void *mem, size_t len, int flags, 7991bd4fe43Sopenharmony_ci struct sockaddr *from, socklen_t *fromlen); 8001bd4fe43Sopenharmony_ci 8011bd4fe43Sopenharmony_ci/** 8021bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 8031bd4fe43Sopenharmony_ci* @brief Initiates transmission of a message from the specified socket to its peer.CNcomment:传输指定长度消息到对端CNend 8041bd4fe43Sopenharmony_ci* 8051bd4fe43Sopenharmony_ci* @par Description: 8061bd4fe43Sopenharmony_ci* Initiates transmission of a message from the specified socket to its peer 8071bd4fe43Sopenharmony_ci* CNcomment:启动从指定套接字到其对等端的消息传输。CNend 8081bd4fe43Sopenharmony_ci* 8091bd4fe43Sopenharmony_ci* @attention NULL 8101bd4fe43Sopenharmony_ci* @param socket [IN] Type #int Specifies the socket file descriptor.CNcomment:指定套接字CNend 8111bd4fe43Sopenharmony_ci* @param buffer [IN] Type #void * Specifies a buffer containing the message to send. 8121bd4fe43Sopenharmony_ci* CNcomment:指定要发送的缓存CNend 8131bd4fe43Sopenharmony_ci* @param length [IN] Type #size_t Specifies the length of the message to send.CNcomment:指定消息长度CNend 8141bd4fe43Sopenharmony_ci* @param flags [IN] Type #int Specifies the type of message reception.CNcomment:指定套接字的标志位CNend 8151bd4fe43Sopenharmony_ci* @retval #>0 Execute successfully. 8161bd4fe43Sopenharmony_ci* @retval #-1 Execute failed. 8171bd4fe43Sopenharmony_ci* @par Dependency: 8181bd4fe43Sopenharmony_ci* #NULL 8191bd4fe43Sopenharmony_ci* @see NULL 8201bd4fe43Sopenharmony_ci*/ 8211bd4fe43Sopenharmony_ciint send(int s, const void *dataptr, size_t size, int flags); 8221bd4fe43Sopenharmony_ci 8231bd4fe43Sopenharmony_ci/** 8241bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 8251bd4fe43Sopenharmony_ci* @brief send messages from a connection-oriented and connectionless sockets. 8261bd4fe43Sopenharmony_ci* CNcomment:从面向连接和无连接的套接字发送消息CNend 8271bd4fe43Sopenharmony_ci* 8281bd4fe43Sopenharmony_ci* @par Description: 8291bd4fe43Sopenharmony_ci* If the socket is in the connectionless mode, the message is sent to the address specified by the 'to' parameter. 8301bd4fe43Sopenharmony_ci* 8311bd4fe43Sopenharmony_ci* CNcomment:如果套接字处于无连接模式,则将消息发送到“to”参数指定的地址 8321bd4fe43Sopenharmony_ci* 如果套接字处于连接模式,则忽略“to”参数中的目标地址CNend 8331bd4fe43Sopenharmony_ci* @attention NULL 8341bd4fe43Sopenharmony_ci* @param socket [IN] Type #int Specifies the socket file descriptor.CNcomment:指定套接字CNend 8351bd4fe43Sopenharmony_ci* @param buffer [IN] Type #void * Specifies a buffer containing the message to send. 8361bd4fe43Sopenharmony_ci* CNcomment:指定要发送的缓存CNend 8371bd4fe43Sopenharmony_ci* @param length [IN] Type #size_t Specifies the length of the message to send.CNcomment:指定消息长度CNend 8381bd4fe43Sopenharmony_ci* @param flags [IN] Type #int Specifies the type of message reception.CNcomment:指定套接字的标志位CNend 8391bd4fe43Sopenharmony_ci* @param flags [IN] Type #struct sockaddr * Specifies a pointer to the sockaddr structure 8401bd4fe43Sopenharmony_ci* that contains the destination address. 8411bd4fe43Sopenharmony_ci* CNcomment:指定指向包含目标地址的sockaddr结构的指针CNend 8421bd4fe43Sopenharmony_ci* @param flags [IN] Type #socklen_t * Specifies the size of the 'to' structure. 8431bd4fe43Sopenharmony_ci* CNcomment:指定“to”结构的大小CNend 8441bd4fe43Sopenharmony_ci* @retval #>0 Execute successfully. 8451bd4fe43Sopenharmony_ci* @retval #-1 Execute failed. 8461bd4fe43Sopenharmony_ci* @par Dependency: 8471bd4fe43Sopenharmony_ci* #NULL 8481bd4fe43Sopenharmony_ci* @see NULL 8491bd4fe43Sopenharmony_ci*/ 8501bd4fe43Sopenharmony_ciint sendto(int s, const void *dataptr, size_t size, int flags, 8511bd4fe43Sopenharmony_ci const struct sockaddr *to, socklen_t tolen); 8521bd4fe43Sopenharmony_ci 8531bd4fe43Sopenharmony_ci/** 8541bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 8551bd4fe43Sopenharmony_ci* @brief Allows a program to monitor multiple file descriptors.CNcomment:允许程序监视多个文件描述符CNend 8561bd4fe43Sopenharmony_ci* 8571bd4fe43Sopenharmony_ci* @par Description: 8581bd4fe43Sopenharmony_ci* select() can monitor only file descriptors numbers that are less than FD_SETSIZE. 8591bd4fe43Sopenharmony_ci* select() uses a timeout that is a struct timeval (with seconds and microseconds). 8601bd4fe43Sopenharmony_ci* CNcomment:select()只能监视小于FD_SETSIZE的文件描述符编号. 8611bd4fe43Sopenharmony_ci* select()使用的超时值是struct timeval(秒和微秒)CNend 8621bd4fe43Sopenharmony_ci* @attention NULL 8631bd4fe43Sopenharmony_ci* @param nfds [IN] Type #int Specifies a range of file descriptors.CNcomment:允许程序监视多个文件描述符CNend 8641bd4fe43Sopenharmony_ci* @param readfds [IN] Type #fd_set * Specifies a pointer to struct fd_set, and specifies the descriptor to 8651bd4fe43Sopenharmony_ci* check for being ready to read. 8661bd4fe43Sopenharmony_ci* CNcomment:指定struct fd_set的指针,并要检查是否准备好读取的描述符CNend 8671bd4fe43Sopenharmony_ci* @param writefds [IN] Type #fd_set * Specifies a pointer to struct fd_set, and specifies the descriptor 8681bd4fe43Sopenharmony_ci* to check for being ready to write.CNcomment: 8691bd4fe43Sopenharmony_ci* 指定指向struct fd_set的指针,并指定要检查是否准备好写入的描述符CNend 8701bd4fe43Sopenharmony_ci* @param exceptfds [IN] Type #fd_set * Specifies a pointer to struct fd_set, and specifies the descriptor 8711bd4fe43Sopenharmony_ci* to check for pending error conditions.CNcomment: 8721bd4fe43Sopenharmony_ci* 指定指向struct fd_set的指针,并指定要检查挂起错误条件的描述符CNend 8731bd4fe43Sopenharmony_ci* @param timeout [IN] Type #struct timeval * Specifies a pointer to struct timeval, for timeout application. 8741bd4fe43Sopenharmony_ci* CNcomment:为超时应用程序指定指向struct timeval的指针CNend 8751bd4fe43Sopenharmony_ci* @retval #>0 Execute successfully. 8761bd4fe43Sopenharmony_ci* @retval #-1 Execute failed. 8771bd4fe43Sopenharmony_ci* @par Dependency: 8781bd4fe43Sopenharmony_ci* #NULL 8791bd4fe43Sopenharmony_ci* @see NULL 8801bd4fe43Sopenharmony_ci 8811bd4fe43Sopenharmony_ci*/ 8821bd4fe43Sopenharmony_ci#if LWIP_TIMEVAL_PRIVATE 8831bd4fe43Sopenharmony_ciint select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset, 8841bd4fe43Sopenharmony_ci struct timeval *timeout); 8851bd4fe43Sopenharmony_ci#endif 8861bd4fe43Sopenharmony_ci/** 8871bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 8881bd4fe43Sopenharmony_ci* @brief Initiates transmission of a message from the specified socket to its peer.CNcomment:传输指定长度消息到对端CNend 8891bd4fe43Sopenharmony_ci* 8901bd4fe43Sopenharmony_ci* @par Description: 8911bd4fe43Sopenharmony_ci* Initiates transmission of a message from the specified socket to its peer 8921bd4fe43Sopenharmony_ci* CNcomment:启动从指定套接字到其对等端的消息传输。CNend 8931bd4fe43Sopenharmony_ci* 8941bd4fe43Sopenharmony_ci* @attention NULL 8951bd4fe43Sopenharmony_ci* @param s [IN] Type #int Indicates the socket file descriptor.CNcomment:指定文件描述符CNend 8961bd4fe43Sopenharmony_ci* @param cmd [IN] Type #int Indicates a command to select an operation[F_GETFL, F_SETFL]. 8971bd4fe43Sopenharmony_ci* CNcomment:指示选择操作的命令[F_GETFL, F_SETFL]CNend 8981bd4fe43Sopenharmony_ci* @param val [IN] Type #int Indicates an additional flag, to set non-blocking. 8991bd4fe43Sopenharmony_ci* CNcomment:指示一个附加标志,以设置非阻塞CNend 9001bd4fe43Sopenharmony_ci* @retval #0 Execute successfully. 9011bd4fe43Sopenharmony_ci* @retval #-1 & Others Execute failed. 9021bd4fe43Sopenharmony_ci* @par Dependency: 9031bd4fe43Sopenharmony_ci* #NULL 9041bd4fe43Sopenharmony_ci* @see NULL 9051bd4fe43Sopenharmony_ci*/ 9061bd4fe43Sopenharmony_ciint fcntl(int s, int cmd, int val); 9071bd4fe43Sopenharmony_ci 9081bd4fe43Sopenharmony_ci/** 9091bd4fe43Sopenharmony_ci* @ingroup hi_net_basic 9101bd4fe43Sopenharmony_ci* @brief Close the socket.CNcomment:关闭套接字CNend 9111bd4fe43Sopenharmony_ci* 9121bd4fe43Sopenharmony_ci* @par Description: 9131bd4fe43Sopenharmony_ci* If O_NONBLOCK is not set and if there is data on the module's write queue, 9141bd4fe43Sopenharmony_ci* close() waits for an unspecified time for any output to drain before dismantling the STREAM. 9151bd4fe43Sopenharmony_ci* If the O_NONBLOCK flag is set,close() does not wait for output to drain, and dismantles the STREAM immediately. 9161bd4fe43Sopenharmony_ci* CNcomment:如果未设置O_NONBLOCK,并且模块的写入队列中有数据,close()等待未指定的时间,等待任何输出排出,然后再拆卸流. 9171bd4fe43Sopenharmony_ci* 如果设置了O_NONBLOCK标志,close()不会等待输出耗尽,并立即取消流CNend 9181bd4fe43Sopenharmony_ci* 9191bd4fe43Sopenharmony_ci* @attention NULL 9201bd4fe43Sopenharmony_ci* @param s [IN] Type #int Indicates the socket file descriptor.CNcomment:指定文件描述符CNend 9211bd4fe43Sopenharmony_ci* @retval #0 Execute successfully. 9221bd4fe43Sopenharmony_ci* @retval #-1 & Others Execute failed. 9231bd4fe43Sopenharmony_ci* @par Dependency: 9241bd4fe43Sopenharmony_ci* #NULL 9251bd4fe43Sopenharmony_ci* @see NULL 9261bd4fe43Sopenharmony_ci*/ 9271bd4fe43Sopenharmony_ciint closesocket(int s); 9281bd4fe43Sopenharmony_ci#define close(s) closesocket(s) 9291bd4fe43Sopenharmony_ci 9301bd4fe43Sopenharmony_ci#ifdef __cplusplus 9311bd4fe43Sopenharmony_ci} 9321bd4fe43Sopenharmony_ci#endif 9331bd4fe43Sopenharmony_ci 9341bd4fe43Sopenharmony_ci#endif 935