1# Netstack 2 3 4## 概述 5 6为网络协议栈模块提供c接口。 7 8**起始版本:** 11 9 10 11## 汇总 12 13 14### 文件 15 16| 名称 | 描述 | 17| -------- | -------- | 18| [net_ssl_c.h](net__ssl__c_8h.md) | 为SSL/TLS证书链校验模块定义C接口。 | 19| [net_ssl_c_type.h](net__ssl__c__type_8h.md) | 定义SSL/TLS证书链校验模块的C接口需要的数据结构。 | 20| [net_websocket.h](net__websocket_8h.md) | 为websocket客户端模块定义C接口。 | 21| [net_websocket_type.h](net__websocket__type_8h.md) | 定义websocket客户端模块的C接口需要的数据结构。 | 22 23 24### 结构体 25 26| 名称 | 描述 | 27| -------- | -------- | 28| [NetStack_CertBlob](_net_stack___cert_blob.md) | 证书数据结构体。 | 29| [WebSocket_CloseResult](_web_socket___close_result.md) | websocket客户端来自服务端关闭的参数。 | 30| [WebSocket_CloseOption](_web_socket___close_option.md) | websocket客户端主动关闭的参数。 | 31| [WebSocket_ErrorResult](_web_socket___error_result.md) | websocket客户端来自服务端连接错误的参数。 | 32| [WebSocket_OpenResult](_web_socket___open_result.md) | websocket客户端来自服务端连接成功的参数。 | 33| [WebSocket_Header](_web_socket___header.md) | websocket客户端增加header头的链表节点。 | 34| [WebSocket_RequestOptions](_web_socket___request_options.md) | websocket客户端和服务端建立连接的参数。 | 35| [WebSocket](_web_socket.md) | websocket客户端结构体。 | 36 37 38### 类型定义 39 40| 名称 | 描述 | 41| -------- | -------- | 42| (\* [WebSocket_OnOpenCallback](#websocket_onopencallback)) (struct [WebSocket](_web_socket.md) \*client, [WebSocket_OpenResult](_web_socket___open_result.md) openResult) | websocket客户端接收open消息的回调函数定义。 | 43| (\* [WebSocket_OnMessageCallback](#websocket_onmessagecallback)) (struct [WebSocket](_web_socket.md) \*client, char \*data, uint32_t length) | websocket客户端接收数据的回调函数定义。 | 44| (\* [WebSocket_OnErrorCallback](#websocket_onerrorcallback)) (struct [WebSocket](_web_socket.md) \*client, [WebSocket_ErrorResult](_web_socket___error_result.md) errorResult) | websocket客户端接收error错误消息的回调函数定义。 | 45| (\* [WebSocket_OnCloseCallback](#websocket_onclosecallback)) (struct [WebSocket](_web_socket.md) \*client, [WebSocket_CloseResult](_web_socket___close_result.md) closeResult) | websocket客户端接收close消息的回调函数定义。 | 46 47### 枚举 48 49| 名称 | 描述 | 50| -------- | -------- | 51| [NetStack_CertType](#netstack_certtype) { <br/>NetStack_CERT_TYPE_PEM = 0, <br/>NetStack_CERT_TYPE_DER = 1, <br/>NetStack_CERT_TYPE_INVALID <br/>} | 证书类型枚举。 | 52| [WebSocket_ErrCode](#websocket_errcode) {<br/>WEBSOCKET_OK = 0, <br/>E_BASE = 1000, <br/>WEBSOCKET_CLIENT_NULL = (E_BASE + 1), <br/>WEBSOCKET_CLIENT_NOT_CREATED = (E_BASE + 2),<br/>WEBSOCKET_CONNECTION_ERROR = (E_BASE + 3), <br/>WEBSOCKET_CONNECTION_PARSE_URL_ERROR = (E_BASE + 5),<br/> WEBSOCKET_CONNECTION_NO_MEMORY = (E_BASE + 6), <br/>WEBSOCKET_CONNECTION_CLOSED_BY_PEER = (E_BASE + 7),<br/>WEBSOCKET_DESTROYED = (E_BASE + 8), <br/>WEBSOCKET_PROTOCOL_ERROR = (E_BASE + 9), <br/>WEBSOCKET_SEND_NO_MEMORY = (E_BASE + 10), <br/>WEBSOCKET_SEND_DATA_NULL = (E_BASE + 11),<br/>WEBSOCKET_DATA_LENGTH_EXCEEDED = (E_BASE + 12), <br/>WEBSOCKET_QUEUE_LENGTH_EXCEEDED = (E_BASE + 13),<br/> WEBSOCKET_NO_CLIENT_CONTEXT = (E_BASE + 14), <br/>WEBSOCKET_NO_HEADER_CONTEXT = (E_BASE + 15),<br/>WEBSOCKET_HEADER_EXCEEDED = (E_BASE + 16), <br/>WEBSOCKET_NO_CONNECTION = (E_BASE + 17), <br/>WEBSOCKET_NO_CONNECTION_CONTEXT = (E_BASE + 18)<br/>} | websocket错误码。 | 53 54### 函数 55 56| 名称 | 描述 | 57| -------- | -------- | 58| [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客户端的构造函数。 | 59| [OH_WebSocketClient_AddHeader](#oh_websocketclient_addheader) (struct [WebSocket](_web_socket.md) \*client, struct [WebSocket_Header](_web_socket___header.md) header) | 将header头信息添加到client客户端request中。 | 60| [OH_WebSocketClient_Connect](#oh_websocketclient_connect) (struct [WebSocket](_web_socket.md) \*client, const char \*url, struct [WebSocket_RequestOptions](_web_socket___request_options.md) options) | 客户端连接服务端。 | 61| [OH_WebSocketClient_Send](#oh_websocketclient_send) (struct [WebSocket](_web_socket.md) \*client, char \*data, size_t length) | 客户端向服务端发送数据。 | 62| [OH_WebSocketClient_Close](#oh_websocketclient_close) (struct [WebSocket](_web_socket.md) \*client, struct [WebSocket_CloseOption](_web_socket___close_option.md) options) | 客户端主动关闭websocket连接。 | 63| [OH_WebSocketClient_Destroy](#oh_websocketclient_destroy) (struct [WebSocket](_web_socket.md) \*client) | 释放websocket连接上下文和资源。 | 64 65### 变量 66 67| 名称 | 描述 | 68| -------- | -------- | 69| [NetStack_CertBlob::type](#type) | 证书类型。 | 70| [NetStack_CertBlob::size](#size) | 证书内容长度。 | 71| [NetStack_CertBlob::data](#data) | 证书内容。 | 72| [WebSocket_CloseResult::code](#code-13) | 关闭的错误码。 | 73| [WebSocket_CloseResult::reason](#reason-13) | 关闭的错误原因。 | 74| [WebSocket_CloseOption::code](#code-23) | 关闭的错误码。 | 75| [WebSocket_CloseOption::reason](#reason-23) | 关闭的错误原因。 | 76| [WebSocket_ErrorResult::errorCode](#errorcode) | 错误码。 | 77| [WebSocket_ErrorResult::errorMessage](#errormessage) | 错误的消息。 | 78| [WebSocket_OpenResult::code](#code-33) | websocket客户端连接成功码。 | 79| [WebSocket_OpenResult::reason](#reason-33) | websocket客户端连接原因。 | 80| [WebSocket_Header::fieldName](#fieldname) | header头的字段名。 | 81| [WebSocket_Header::fieldValue](#fieldvalue) | header头的字段内容。 | 82| [WebSocket_Header](_web_socket___header.md) \* [WebSocket_Header::next](#next) | header头链表的next指针。 | 83| [WebSocket_Header](_web_socket___header.md) \* WebSocket_RequestOptions::headers | header头信息。 | 84| [WebSocket_OnOpenCallback](#websocket_onopencallback)[WebSocket::onOpen](#onopen) | 客户端接收连接消息的回调指针。 | 85| [WebSocket_OnMessageCallback](#websocket_onmessagecallback)[WebSocket::onMessage](#onmessage) | 客户端接收消息的回调指针。 | 86| [WebSocket_OnErrorCallback](#websocket_onerrorcallback)[WebSocket::onError](#onerror) | 客户端接收错误消息的回调指针。 | 87| [WebSocket_OnCloseCallback](#websocket_onclosecallback)[WebSocket::onClose](#onclose) | 客户端接收关闭消息的回调指针。 | 88| [WebSocket_RequestOptions](_web_socket___request_options.md)[WebSocket::requestOptions](#requestoptions) | 客户端建立连接请求内容。 | 89 90 91## 类型定义说明 92 93 94### WebSocket_OnCloseCallback 95 96``` 97typedef void(* WebSocket_OnCloseCallback) (struct WebSocket *client, WebSocket_CloseResult closeResult) 98``` 99**描述** 100websocket客户端接收close消息的回调函数定义 101 102**起始版本:** 11 103 104**参数:** 105 106| 名称 | 描述 | 107| -------- | -------- | 108| client | websocket客户端 | 109| closeResult | websocket客户端接收关闭消息的内容 | 110 111 112### WebSocket_OnErrorCallback 113 114``` 115typedef void(* WebSocket_OnErrorCallback) (struct WebSocket *client, WebSocket_ErrorResult errorResult) 116``` 117**描述** 118websocket客户端接收error错误消息的回调函数定义 119 120**起始版本:** 11 121 122**参数:** 123 124| 名称 | 描述 | 125| -------- | -------- | 126| client | websocket客户端 | 127| errorResult | websocket客户端接收连接错误消息的内容 | 128 129 130### WebSocket_OnMessageCallback 131 132``` 133typedef void(* WebSocket_OnMessageCallback) (struct WebSocket *client, char *data, uint32_t length) 134``` 135**描述** 136websocket客户端接收数据的回调函数定义 137 138**起始版本:** 11 139 140**参数:** 141 142| 名称 | 描述 | 143| -------- | -------- | 144| client | websocket客户端 | 145| data | websocket客户端接收的数据 | 146| length | websocket客户端接收的数据长度 | 147 148 149### WebSocket_OnOpenCallback 150 151``` 152typedef void(* WebSocket_OnOpenCallback) (struct WebSocket *client, WebSocket_OpenResult openResult) 153``` 154**描述** 155websocket客户端接收open消息的回调函数定义 156 157**起始版本:** 11 158 159**参数:** 160 161| 名称 | 描述 | 162| -------- | -------- | 163| client | websocket客户端 | 164| openResult | websocket客户端接收建立连接消息的内容 | 165 166 167 168## 枚举类型说明 169 170 171### NetStack_CertType 172 173``` 174enum NetStack_CertType 175``` 176 177**描述** 178 179证书类型枚举。 180 181**起始版本:** 11 182 183| 枚举值 | 描述 | 184| -------- | -------- | 185| NetStack_CERT_TYPE_PEM | PEM证书类型。 | 186| NetStack_CERT_TYPE_DER | DER证书类型。 | 187| NetStack_CERT_TYPE_INVALID | 错误证书类型。 | 188 189 190### WebSocket_ErrCode 191 192``` 193enum WebSocket_ErrCode 194``` 195**描述** 196websocket错误码 197 198**起始版本:** 11 199 200| 枚举值 | 描述 | 201| -------- | -------- | 202| WEBSOCKET_OK | 执行成功。 | 203| E_BASE | 异常错误代码的基础。 | 204| WEBSOCKET_CLIENT_NULL | websocket为空。 | 205| WEBSOCKET_CLIENT_NOT_CREATED | websocket未创建。 | 206| WEBSOCKET_CONNECTION_ERROR | websocket客户端连接错误。 | 207| WEBSOCKET_CONNECTION_PARSE_URL_ERROR | websocket客户端连接参数解析错误。 | 208| WEBSOCKET_CONNECTION_NO_MEMORY | websocket客户端连接时创建上下文无内存。 | 209| WEBSOCKET_CONNECTION_CLOSED_BY_PEER | 初始化时候关闭。 | 210| WEBSOCKET_DESTROYED | websocket连接被销毁。 | 211| WEBSOCKET_PROTOCOL_ERROR | websocket客户端连接时候协议错误。 | 212| WEBSOCKET_SEND_NO_MEMORY | websocket客户端发送数据时候没有足够内存。 | 213| WEBSOCKET_SEND_DATA_NULL | websocket客户端发送数据为空。 | 214| WEBSOCKET_DATA_LENGTH_EXCEEDED | websocket客户端发送数据长度超限制。 | 215| WEBSOCKET_QUEUE_LENGTH_EXCEEDED | websocket客户端发送数据队列长度超限制。 | 216| WEBSOCKET_NO_CLIENT_CONTEXT | websocket客户端上下文为空。 | 217| WEBSOCKET_NO_HEADER_CONTEXT | websocket客户端header头异常。 | 218| WEBSOCKET_HEADER_EXCEEDED | websocket客户端header头超过限制。 | 219| WEBSOCKET_NO_CONNECTION | websocket客户端没有连接。 | 220| WEBSOCKET_NO_CONNECTION_CONTEXT | websocket客户端没有连接上下文。 | 221 222 223## 函数说明 224 225 226### OH_NetStack_VerifyCertification() 227 228``` 229uint32_t OH_NetStack_VerifyCertification (const struct NetStack_CertBlob * cert, const struct NetStack_CertBlob * caCert ) 230``` 231 232**描述** 233 234证书链校验接口。 235 236**系统能力:** SystemCapability.Communication.NetStack 237 238**起始版本:** 11 239 240**参数:** 241 242| 名称 | 描述 | 243| -------- | -------- | 244| cert | 用户传入的待校验证书。 | 245| caCert | 用户指定的证书,若为空则以系统预置证书进行校验。 | 246 247**返回:** 248 2490 - 成功. 250 2512305001 - 未指定的错误. 252 2532305002 - 无法获取颁发者证书. 254 2552305003 - 无法获取证书吊销列表(CRL). 256 2572305004 - 无法解密证书签名. 258 2592305005 - 无法解密CRL签名. 260 2612305006 - 无法解码颁发者公钥. 262 2632305007 - 证书签名失败. 264 2652305008 - CRL签名失败. 266 2672305009 - 证书尚未生效. 268 2692305010 - 证书已过期. 270 2712305011 - CRL尚未有效. 272 2732305012 - CRL已过期. 274 2752305023 - 证书已被吊销. 276 2772305024 - 证书颁发机构(CA)无效. 278 2792305027 - 证书不受信任. 280 281### OH_WebSocketClient_AddHeader() 282 283``` 284int OH_WebSocketClient_AddHeader (struct WebSocket * client, struct WebSocket_Header header ) 285``` 286**描述** 287将header头信息添加到client客户端request中。 288 289**系统能力:** SystemCapability.Communication.NetStack 290 291**起始版本:** 11 292 293**参数:** 294 295| 名称 | 描述 | 296| -------- | -------- | 297| client | 客户端指针。 | 298| header | header头信息。 | 299 300**返回:** 301 302返回值为0表示执行成功。返回错细信息可以查看**OH_Websocket_ErrCode**。 303 304**Permission:** 305 306ohos.permission.INTERNET 307 308 309### OH_WebSocketClient_Close() 310 311``` 312int OH_WebSocketClient_Close (struct WebSocket * client, struct WebSocket_CloseOption options ) 313``` 314**描述** 315客户端主动关闭websocket连接。 316 317**系统能力:** SystemCapability.Communication.NetStack 318 319**起始版本:** 11 320 321**参数:** 322 323| 名称 | 描述 | 324| -------- | -------- | 325| client | 客户端。 | 326| url | 客户端要连接到服务端的地址。 | 327| options | 发起关闭连接的可选参数。 | 328 329**返回:** 330 331返回值为0表示执行成功。返回错细信息可以查看**OH_Websocket_ErrCode**。 332 333**Permission:** 334 335ohos.permission.INTERNET 336 337 338### OH_WebSocketClient_Connect() 339 340``` 341int OH_WebSocketClient_Connect (struct WebSocket * client, const char * url, struct WebSocket_RequestOptions options ) 342``` 343**描述** 344客户端连接服务端。 345 346**系统能力:** SystemCapability.Communication.NetStack 347 348**起始版本:** 11 349 350**参数:** 351 352| 名称 | 描述 | 353| -------- | -------- | 354| client | 客户端指针。 | 355| url | 客户端要连接到服务端的地址。 | 356| options | 发起连接的可选参数。 | 357 358**返回:** 359 360返回值为0表示执行成功。返回错细信息可以查看**OH_Websocket_ErrCode**。 361 362**Permission:** 363 364ohos.permission.INTERNET 365 366 367### OH_WebSocketClient_Constructor() 368 369``` 370struct WebSocket* OH_WebSocketClient_Constructor (WebSocket_OnOpenCallback onOpen, WebSocket_OnMessageCallback onMessage, WebSocket_OnErrorCallback onError, WebSocket_OnCloseCallback onclose ) 371``` 372**描述** 373OH_NetStack_WebsocketClient客户端的构造函数。 374 375**系统能力:** SystemCapability.Communication.NetStack 376 377**起始版本:** 11 378 379**参数:** 380 381| 名称 | 描述 | 382| -------- | -------- | 383| onMessage | 客户端定义的接收消息的回调函数。 | 384| onClose | 客户端定义的关闭消息的回调函数。 | 385| onError | 客户端定义的错误消息的回调函数。 | 386| onOpen | 客户端定义的建立连接消息的回调函数。 | 387 388**返回:** 389 390成功返回客户端指针,失败返回为NULL。 391 392**Permission:** 393 394ohos.permission.INTERNET 395 396 397### OH_WebSocketClient_Destroy() 398 399``` 400int OH_WebSocketClient_Destroy (struct WebSocket * client) 401``` 402**描述** 403释放websocket连接上下文和资源。 404 405**系统能力:** SystemCapability.Communication.NetStack 406 407**起始版本:** 11 408 409**参数:** 410 411| 名称 | 描述 | 412| -------- | -------- | 413| client | 客户端。 | 414 415**返回:** 416 417返回值为0表示执行成功。返回错细信息可以查看**OH_Websocket_ErrCode**。 418 419**Permission:** 420 421ohos.permission.INTERNET 422 423 424### OH_WebSocketClient_Send() 425 426``` 427int OH_WebSocketClient_Send (struct WebSocket * client, char * data, size_t length ) 428``` 429**描述** 430客户端向服务端发送数据。 431 432**系统能力:** SystemCapability.Communication.NetStack 433 434**起始版本:** 11 435 436**参数:** 437 438| 名称 | 描述 | 439| -------- | -------- | 440| client | 客户端。 | 441| data | 客户端发送的数据。 | 442| length | 客户端发送的数据长度。 | 443 444**返回:** 445 4460 - 成功. 447 448返回值为0表示执行成功。返回错细信息可以查看**OH_Websocket_ErrCode**。 449 450**Permission:** 451 452ohos.permission.INTERNET 453 454## 变量说明 455 456 457### data 458 459``` 460uint8_t* NetStack_CertBlob::data 461``` 462 463**描述** 464 465证书内容。 466 467 468### size 469 470``` 471uint32_t NetStack_CertBlob::size 472``` 473 474**描述** 475 476证书内容长度。 477 478 479### type 480 481``` 482enum NetStack_CertType NetStack_CertBlob::type 483``` 484 485**描述** 486 487证书类型。 488 489 490### code [1/3] 491 492``` 493uint32_t WebSocket_CloseResult::code 494``` 495 496**描述** 497 498关闭的错误码。 499 500 501### code [2/3] 502 503``` 504uint32_t WebSocket_CloseOption::code 505``` 506 507**描述** 508 509关闭的错误码。 510 511 512### code [3/3] 513 514``` 515uint32_t WebSocket_OpenResult::code 516``` 517 518**描述** 519 520websocket客户端连接成功码。 521 522 523### errorCode 524 525``` 526uint32_t WebSocket_ErrorResult::errorCode 527``` 528 529**描述** 530 531错误码。 532 533 534### errorMessage 535 536``` 537const char* WebSocket_ErrorResult::errorMessage 538``` 539 540**描述** 541 542错误的消息。 543 544 545### fieldName 546 547``` 548const char* WebSocket_Header::fieldName 549``` 550 551**描述** 552 553header头的字段名。 554 555 556### fieldValue 557 558``` 559const char* WebSocket_Header::fieldValue 560``` 561 562**描述** 563 564header头的字段内容。 565 566 567### next 568 569``` 570struct WebSocket_Header* WebSocket_Header::next 571``` 572 573**描述** 574 575header头链表的next指针。 576 577 578### onClose 579 580``` 581WebSocket_OnCloseCallback WebSocket::onClose 582``` 583 584**描述** 585 586客户端接收关闭消息的回调指针。 587 588 589### onError 590 591``` 592WebSocket_OnErrorCallback WebSocket::onError 593``` 594 595**描述** 596 597客户端接收错误消息的回调指针。 598 599 600### onMessage 601 602``` 603WebSocket_OnMessageCallback WebSocket::onMessage 604``` 605 606**描述** 607 608客户端接收消息的回调指针。 609 610 611### onOpen 612 613``` 614WebSocket_OnOpenCallback WebSocket::onOpen 615``` 616 617**描述** 618 619客户端接收连接消息的回调指针。 620 621 622### reason [1/3] 623 624``` 625const char* WebSocket_CloseResult::reason 626``` 627 628**描述** 629 630关闭的错误原因。 631 632 633### reason [2/3] 634 635``` 636const char* WebSocket_CloseOption::reason 637``` 638 639**描述** 640 641关闭的错误原因。 642 643 644### reason [3/3] 645 646``` 647const char* WebSocket_OpenResult::reason 648``` 649 650**描述** 651 652websocket客户端连接原因。 653 654 655### requestOptions 656 657``` 658WebSocket_RequestOptions WebSocket::requestOptions 659``` 660 661**描述** 662 663客户端建立连接请求内容。