# Netstack ## 概述 为网络协议栈模块提供c接口。 **起始版本:** 11 ## 汇总 ### 文件 | 名称 | 描述 | | -------- | -------- | | [net_ssl_c.h](net__ssl__c_8h.md) | 为SSL/TLS证书链校验模块定义C接口。 | | [net_ssl_c_type.h](net__ssl__c__type_8h.md) | 定义SSL/TLS证书链校验模块的C接口需要的数据结构。 | | [net_websocket.h](net__websocket_8h.md) | 为websocket客户端模块定义C接口。 | | [net_websocket_type.h](net__websocket__type_8h.md) | 定义websocket客户端模块的C接口需要的数据结构。 | ### 结构体 | 名称 | 描述 | | -------- | -------- | | [NetStack_CertBlob](_net_stack___cert_blob.md) | 证书数据结构体。 | | [WebSocket_CloseResult](_web_socket___close_result.md) | websocket客户端来自服务端关闭的参数。 | | [WebSocket_CloseOption](_web_socket___close_option.md) | websocket客户端主动关闭的参数。 | | [WebSocket_ErrorResult](_web_socket___error_result.md) | websocket客户端来自服务端连接错误的参数。 | | [WebSocket_OpenResult](_web_socket___open_result.md) | websocket客户端来自服务端连接成功的参数。 | | [WebSocket_Header](_web_socket___header.md) | websocket客户端增加header头的链表节点。 | | [WebSocket_RequestOptions](_web_socket___request_options.md) | websocket客户端和服务端建立连接的参数。 | | [WebSocket](_web_socket.md) | websocket客户端结构体。 | ### 类型定义 | 名称 | 描述 | | -------- | -------- | | (\* [WebSocket_OnOpenCallback](#websocket_onopencallback)) (struct [WebSocket](_web_socket.md) \*client, [WebSocket_OpenResult](_web_socket___open_result.md) openResult) | websocket客户端接收open消息的回调函数定义。 | | (\* [WebSocket_OnMessageCallback](#websocket_onmessagecallback)) (struct [WebSocket](_web_socket.md) \*client, char \*data, uint32_t length) | websocket客户端接收数据的回调函数定义。 | | (\* [WebSocket_OnErrorCallback](#websocket_onerrorcallback)) (struct [WebSocket](_web_socket.md) \*client, [WebSocket_ErrorResult](_web_socket___error_result.md) errorResult) | websocket客户端接收error错误消息的回调函数定义。 | | (\* [WebSocket_OnCloseCallback](#websocket_onclosecallback)) (struct [WebSocket](_web_socket.md) \*client, [WebSocket_CloseResult](_web_socket___close_result.md) closeResult) | websocket客户端接收close消息的回调函数定义。 | ### 枚举 | 名称 | 描述 | | -------- | -------- | | [NetStack_CertType](#netstack_certtype) {
NetStack_CERT_TYPE_PEM = 0,
NetStack_CERT_TYPE_DER = 1,
NetStack_CERT_TYPE_INVALID
} | 证书类型枚举。 | | [WebSocket_ErrCode](#websocket_errcode) {
WEBSOCKET_OK = 0,
E_BASE = 1000,
WEBSOCKET_CLIENT_NULL = (E_BASE + 1),
WEBSOCKET_CLIENT_NOT_CREATED = (E_BASE + 2),
WEBSOCKET_CONNECTION_ERROR = (E_BASE + 3),
WEBSOCKET_CONNECTION_PARSE_URL_ERROR = (E_BASE + 5),
WEBSOCKET_CONNECTION_NO_MEMORY = (E_BASE + 6),
WEBSOCKET_CONNECTION_CLOSED_BY_PEER = (E_BASE + 7),
WEBSOCKET_DESTROYED = (E_BASE + 8),
WEBSOCKET_PROTOCOL_ERROR = (E_BASE + 9),
WEBSOCKET_SEND_NO_MEMORY = (E_BASE + 10),
WEBSOCKET_SEND_DATA_NULL = (E_BASE + 11),
WEBSOCKET_DATA_LENGTH_EXCEEDED = (E_BASE + 12),
WEBSOCKET_QUEUE_LENGTH_EXCEEDED = (E_BASE + 13),
WEBSOCKET_NO_CLIENT_CONTEXT = (E_BASE + 14),
WEBSOCKET_NO_HEADER_CONTEXT = (E_BASE + 15),
WEBSOCKET_HEADER_EXCEEDED = (E_BASE + 16),
WEBSOCKET_NO_CONNECTION = (E_BASE + 17),
WEBSOCKET_NO_CONNECTION_CONTEXT = (E_BASE + 18)
} | websocket错误码。 | ### 函数 | 名称 | 描述 | | -------- | -------- | | [OH_WebSocketClient_Constructor](#oh_websocketclient_constructor) ([WebSocket_OnOpenCallback](#websocket_onopencallback) onOpen, [WebSocket_OnMessageCallback](#websocket_onmessagecallback) onMessage, [WebSocket_OnErrorCallback](#websocket_onerrorcallback) onError, [WebSocket_OnCloseCallback](#websocket_onclosecallback) onclose) | OH_NetStack_WebsocketClient客户端的构造函数。 | | [OH_WebSocketClient_AddHeader](#oh_websocketclient_addheader) (struct [WebSocket](_web_socket.md) \*client, struct [WebSocket_Header](_web_socket___header.md) header) | 将header头信息添加到client客户端request中。 | | [OH_WebSocketClient_Connect](#oh_websocketclient_connect) (struct [WebSocket](_web_socket.md) \*client, const char \*url, struct [WebSocket_RequestOptions](_web_socket___request_options.md) options) | 客户端连接服务端。 | | [OH_WebSocketClient_Send](#oh_websocketclient_send) (struct [WebSocket](_web_socket.md) \*client, char \*data, size_t length) | 客户端向服务端发送数据。 | | [OH_WebSocketClient_Close](#oh_websocketclient_close) (struct [WebSocket](_web_socket.md) \*client, struct [WebSocket_CloseOption](_web_socket___close_option.md) options) | 客户端主动关闭websocket连接。 | | [OH_WebSocketClient_Destroy](#oh_websocketclient_destroy) (struct [WebSocket](_web_socket.md) \*client) | 释放websocket连接上下文和资源。 | ### 变量 | 名称 | 描述 | | -------- | -------- | | [NetStack_CertBlob::type](#type) | 证书类型。 | | [NetStack_CertBlob::size](#size) | 证书内容长度。 | | [NetStack_CertBlob::data](#data) | 证书内容。 | | [WebSocket_CloseResult::code](#code-13) | 关闭的错误码。 | | [WebSocket_CloseResult::reason](#reason-13) | 关闭的错误原因。 | | [WebSocket_CloseOption::code](#code-23) | 关闭的错误码。 | | [WebSocket_CloseOption::reason](#reason-23) | 关闭的错误原因。 | | [WebSocket_ErrorResult::errorCode](#errorcode) | 错误码。 | | [WebSocket_ErrorResult::errorMessage](#errormessage) | 错误的消息。 | | [WebSocket_OpenResult::code](#code-33) | websocket客户端连接成功码。 | | [WebSocket_OpenResult::reason](#reason-33) | websocket客户端连接原因。 | | [WebSocket_Header::fieldName](#fieldname) | header头的字段名。 | | [WebSocket_Header::fieldValue](#fieldvalue) | header头的字段内容。 | | [WebSocket_Header](_web_socket___header.md) \* [WebSocket_Header::next](#next) | header头链表的next指针。 | | [WebSocket_Header](_web_socket___header.md) \* WebSocket_RequestOptions::headers | header头信息。 | | [WebSocket_OnOpenCallback](#websocket_onopencallback)[WebSocket::onOpen](#onopen) | 客户端接收连接消息的回调指针。 | | [WebSocket_OnMessageCallback](#websocket_onmessagecallback)[WebSocket::onMessage](#onmessage) | 客户端接收消息的回调指针。 | | [WebSocket_OnErrorCallback](#websocket_onerrorcallback)[WebSocket::onError](#onerror) | 客户端接收错误消息的回调指针。 | | [WebSocket_OnCloseCallback](#websocket_onclosecallback)[WebSocket::onClose](#onclose) | 客户端接收关闭消息的回调指针。 | | [WebSocket_RequestOptions](_web_socket___request_options.md)[WebSocket::requestOptions](#requestoptions) | 客户端建立连接请求内容。 | ## 类型定义说明 ### WebSocket_OnCloseCallback ``` typedef void(* WebSocket_OnCloseCallback) (struct WebSocket *client, WebSocket_CloseResult closeResult) ``` **描述** websocket客户端接收close消息的回调函数定义 **起始版本:** 11 **参数:** | 名称 | 描述 | | -------- | -------- | | client | websocket客户端 | | closeResult | websocket客户端接收关闭消息的内容 | ### WebSocket_OnErrorCallback ``` typedef void(* WebSocket_OnErrorCallback) (struct WebSocket *client, WebSocket_ErrorResult errorResult) ``` **描述** websocket客户端接收error错误消息的回调函数定义 **起始版本:** 11 **参数:** | 名称 | 描述 | | -------- | -------- | | client | websocket客户端 | | errorResult | websocket客户端接收连接错误消息的内容 | ### WebSocket_OnMessageCallback ``` typedef void(* WebSocket_OnMessageCallback) (struct WebSocket *client, char *data, uint32_t length) ``` **描述** websocket客户端接收数据的回调函数定义 **起始版本:** 11 **参数:** | 名称 | 描述 | | -------- | -------- | | client | websocket客户端 | | data | websocket客户端接收的数据 | | length | websocket客户端接收的数据长度 | ### WebSocket_OnOpenCallback ``` typedef void(* WebSocket_OnOpenCallback) (struct WebSocket *client, WebSocket_OpenResult openResult) ``` **描述** websocket客户端接收open消息的回调函数定义 **起始版本:** 11 **参数:** | 名称 | 描述 | | -------- | -------- | | client | websocket客户端 | | openResult | websocket客户端接收建立连接消息的内容 | ## 枚举类型说明 ### NetStack_CertType ``` enum NetStack_CertType ``` **描述** 证书类型枚举。 **起始版本:** 11 | 枚举值 | 描述 | | -------- | -------- | | NetStack_CERT_TYPE_PEM | PEM证书类型。 | | NetStack_CERT_TYPE_DER | DER证书类型。 | | NetStack_CERT_TYPE_INVALID | 错误证书类型。 | ### WebSocket_ErrCode ``` enum WebSocket_ErrCode ``` **描述** websocket错误码 **起始版本:** 11 | 枚举值 | 描述 | | -------- | -------- | | WEBSOCKET_OK | 执行成功。 | | E_BASE | 异常错误代码的基础。 | | WEBSOCKET_CLIENT_NULL | websocket为空。 | | WEBSOCKET_CLIENT_NOT_CREATED | websocket未创建。 | | WEBSOCKET_CONNECTION_ERROR | websocket客户端连接错误。 | | WEBSOCKET_CONNECTION_PARSE_URL_ERROR | websocket客户端连接参数解析错误。 | | WEBSOCKET_CONNECTION_NO_MEMORY | websocket客户端连接时创建上下文无内存。 | | WEBSOCKET_CONNECTION_CLOSED_BY_PEER | 初始化时候关闭。 | | WEBSOCKET_DESTROYED | websocket连接被销毁。 | | WEBSOCKET_PROTOCOL_ERROR | websocket客户端连接时候协议错误。 | | WEBSOCKET_SEND_NO_MEMORY | websocket客户端发送数据时候没有足够内存。 | | WEBSOCKET_SEND_DATA_NULL | websocket客户端发送数据为空。 | | WEBSOCKET_DATA_LENGTH_EXCEEDED | websocket客户端发送数据长度超限制。 | | WEBSOCKET_QUEUE_LENGTH_EXCEEDED | websocket客户端发送数据队列长度超限制。 | | WEBSOCKET_NO_CLIENT_CONTEXT | websocket客户端上下文为空。 | | WEBSOCKET_NO_HEADER_CONTEXT | websocket客户端header头异常。 | | WEBSOCKET_HEADER_EXCEEDED | websocket客户端header头超过限制。 | | WEBSOCKET_NO_CONNECTION | websocket客户端没有连接。 | | WEBSOCKET_NO_CONNECTION_CONTEXT | websocket客户端没有连接上下文。 | ## 函数说明 ### OH_NetStack_VerifyCertification() ``` uint32_t OH_NetStack_VerifyCertification (const struct NetStack_CertBlob * cert, const struct NetStack_CertBlob * caCert ) ``` **描述** 证书链校验接口。 **系统能力:** SystemCapability.Communication.NetStack **起始版本:** 11 **参数:** | 名称 | 描述 | | -------- | -------- | | cert | 用户传入的待校验证书。 | | caCert | 用户指定的证书,若为空则以系统预置证书进行校验。 | **返回:** 0 - 成功. 2305001 - 未指定的错误. 2305002 - 无法获取颁发者证书. 2305003 - 无法获取证书吊销列表(CRL). 2305004 - 无法解密证书签名. 2305005 - 无法解密CRL签名. 2305006 - 无法解码颁发者公钥. 2305007 - 证书签名失败. 2305008 - CRL签名失败. 2305009 - 证书尚未生效. 2305010 - 证书已过期. 2305011 - CRL尚未有效. 2305012 - CRL已过期. 2305023 - 证书已被吊销. 2305024 - 证书颁发机构(CA)无效. 2305027 - 证书不受信任. ### OH_WebSocketClient_AddHeader() ``` int OH_WebSocketClient_AddHeader (struct WebSocket * client, struct WebSocket_Header header ) ``` **描述** 将header头信息添加到client客户端request中。 **系统能力:** SystemCapability.Communication.NetStack **起始版本:** 11 **参数:** | 名称 | 描述 | | -------- | -------- | | client | 客户端指针。 | | header | header头信息。 | **返回:** 返回值为0表示执行成功。返回错细信息可以查看**OH_Websocket_ErrCode**。 **Permission:** ohos.permission.INTERNET ### OH_WebSocketClient_Close() ``` int OH_WebSocketClient_Close (struct WebSocket * client, struct WebSocket_CloseOption options ) ``` **描述** 客户端主动关闭websocket连接。 **系统能力:** SystemCapability.Communication.NetStack **起始版本:** 11 **参数:** | 名称 | 描述 | | -------- | -------- | | client | 客户端。 | | url | 客户端要连接到服务端的地址。 | | options | 发起关闭连接的可选参数。 | **返回:** 返回值为0表示执行成功。返回错细信息可以查看**OH_Websocket_ErrCode**。 **Permission:** ohos.permission.INTERNET ### OH_WebSocketClient_Connect() ``` int OH_WebSocketClient_Connect (struct WebSocket * client, const char * url, struct WebSocket_RequestOptions options ) ``` **描述** 客户端连接服务端。 **系统能力:** SystemCapability.Communication.NetStack **起始版本:** 11 **参数:** | 名称 | 描述 | | -------- | -------- | | client | 客户端指针。 | | url | 客户端要连接到服务端的地址。 | | options | 发起连接的可选参数。 | **返回:** 返回值为0表示执行成功。返回错细信息可以查看**OH_Websocket_ErrCode**。 **Permission:** ohos.permission.INTERNET ### OH_WebSocketClient_Constructor() ``` struct WebSocket* OH_WebSocketClient_Constructor (WebSocket_OnOpenCallback onOpen, WebSocket_OnMessageCallback onMessage, WebSocket_OnErrorCallback onError, WebSocket_OnCloseCallback onclose ) ``` **描述** OH_NetStack_WebsocketClient客户端的构造函数。 **系统能力:** SystemCapability.Communication.NetStack **起始版本:** 11 **参数:** | 名称 | 描述 | | -------- | -------- | | onMessage | 客户端定义的接收消息的回调函数。 | | onClose | 客户端定义的关闭消息的回调函数。 | | onError | 客户端定义的错误消息的回调函数。 | | onOpen | 客户端定义的建立连接消息的回调函数。 | **返回:** 成功返回客户端指针,失败返回为NULL。 **Permission:** ohos.permission.INTERNET ### OH_WebSocketClient_Destroy() ``` int OH_WebSocketClient_Destroy (struct WebSocket * client) ``` **描述** 释放websocket连接上下文和资源。 **系统能力:** SystemCapability.Communication.NetStack **起始版本:** 11 **参数:** | 名称 | 描述 | | -------- | -------- | | client | 客户端。 | **返回:** 返回值为0表示执行成功。返回错细信息可以查看**OH_Websocket_ErrCode**。 **Permission:** ohos.permission.INTERNET ### OH_WebSocketClient_Send() ``` int OH_WebSocketClient_Send (struct WebSocket * client, char * data, size_t length ) ``` **描述** 客户端向服务端发送数据。 **系统能力:** SystemCapability.Communication.NetStack **起始版本:** 11 **参数:** | 名称 | 描述 | | -------- | -------- | | client | 客户端。 | | data | 客户端发送的数据。 | | length | 客户端发送的数据长度。 | **返回:** 0 - 成功. 返回值为0表示执行成功。返回错细信息可以查看**OH_Websocket_ErrCode**。 **Permission:** ohos.permission.INTERNET ## 变量说明 ### data ``` uint8_t* NetStack_CertBlob::data ``` **描述** 证书内容。 ### size ``` uint32_t NetStack_CertBlob::size ``` **描述** 证书内容长度。 ### type ``` enum NetStack_CertType NetStack_CertBlob::type ``` **描述** 证书类型。 ### code [1/3] ``` uint32_t WebSocket_CloseResult::code ``` **描述** 关闭的错误码。 ### code [2/3] ``` uint32_t WebSocket_CloseOption::code ``` **描述** 关闭的错误码。 ### code [3/3] ``` uint32_t WebSocket_OpenResult::code ``` **描述** websocket客户端连接成功码。 ### errorCode ``` uint32_t WebSocket_ErrorResult::errorCode ``` **描述** 错误码。 ### errorMessage ``` const char* WebSocket_ErrorResult::errorMessage ``` **描述** 错误的消息。 ### fieldName ``` const char* WebSocket_Header::fieldName ``` **描述** header头的字段名。 ### fieldValue ``` const char* WebSocket_Header::fieldValue ``` **描述** header头的字段内容。 ### next ``` struct WebSocket_Header* WebSocket_Header::next ``` **描述** header头链表的next指针。 ### onClose ``` WebSocket_OnCloseCallback WebSocket::onClose ``` **描述** 客户端接收关闭消息的回调指针。 ### onError ``` WebSocket_OnErrorCallback WebSocket::onError ``` **描述** 客户端接收错误消息的回调指针。 ### onMessage ``` WebSocket_OnMessageCallback WebSocket::onMessage ``` **描述** 客户端接收消息的回调指针。 ### onOpen ``` WebSocket_OnOpenCallback WebSocket::onOpen ``` **描述** 客户端接收连接消息的回调指针。 ### reason [1/3] ``` const char* WebSocket_CloseResult::reason ``` **描述** 关闭的错误原因。 ### reason [2/3] ``` const char* WebSocket_CloseOption::reason ``` **描述** 关闭的错误原因。 ### reason [3/3] ``` const char* WebSocket_OpenResult::reason ``` **描述** websocket客户端连接原因。 ### requestOptions ``` WebSocket_RequestOptions WebSocket::requestOptions ``` **描述** 客户端建立连接请求内容。