js-apis-socket.md 46.7 KB
Newer Older
C
clevercong 已提交
1
# Socket连接
C
clevercong 已提交
2 3 4 5 6 7

>![](public_sys-resources/icon-note.gif) **说明:** 
>
>本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
>

C
clevercong 已提交
8
## 导入模块
C
clevercong 已提交
9

Z
zengyawen 已提交
10
```js
C
clevercong 已提交
11 12 13
import socket from '@ohos.net.socket';
```

C
clevercong 已提交
14
## socket.constructUDPSocketInstance
C
clevercong 已提交
15 16 17 18 19

constructUDPSocketInstance\(\): UDPSocket

创建一个UDPSocket对象。

C
clevercong 已提交
20
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
21

C
clevercong 已提交
22
**返回值:**
C
clevercong 已提交
23

C
clevercong 已提交
24 25
| 类型                               | 说明                    |
| :--------------------------------- | :---------------------- |
C
clevercong 已提交
26
| [UDPSocket](#udpsocket) | 返回一个UDPSocket对象。 |
C
clevercong 已提交
27 28


C
clevercong 已提交
29
**示例:**
C
clevercong 已提交
30

Z
zengyawen 已提交
31
```js
C
clevercong 已提交
32 33
let udp = socket.constructUDPSocketInstance();
```
C
clevercong 已提交
34 35


C
clevercong 已提交
36
## UDPSocket
C
clevercong 已提交
37

C
clevercong 已提交
38
UDPSocket连接。在调用UDPSocket的方法前,需要先通过[socket.constructUDPSocketInstance](#socketconstructudpsocketinstance)创建UDPSocket对象。
C
clevercong 已提交
39

C
clevercong 已提交
40
### bind
C
clevercong 已提交
41 42 43 44 45

bind\(address: NetAddress, callback: AsyncCallback<void\>\): void

绑定IP地址和端口,端口可以指定或由系统随机分配。使用callback方式作为异步方法。

C
clevercong 已提交
46 47
**需要权限**:ohos.permission.INTERNET

C
clevercong 已提交
48
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
49

C
clevercong 已提交
50
**参数:**
C
clevercong 已提交
51

C
clevercong 已提交
52 53
| 参数名   | 类型                               | 必填 | 说明                                                   |
| -------- | ---------------------------------- | ---- | ------------------------------------------------------ |
C
clevercong 已提交
54
| address  | [NetAddress](#netaddress) | 是   | 目标地址信息,参考[NetAddress](#netaddress)。 |
C
clevercong 已提交
55
| callback | AsyncCallback\<void\>              | 是   | 回调函数。                                             |
C
clevercong 已提交
56

C
clevercong 已提交
57
**示例:**
C
clevercong 已提交
58

Z
zengyawen 已提交
59
```js
C
clevercong 已提交
60 61 62 63 64 65 66 67 68
let udp = socket.constructUDPSocketInstance();
udp.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => {
  if (err) {
	console.log('bind fail');
	return;
  }
  console.log('bind success');
})
```
C
clevercong 已提交
69 70


C
clevercong 已提交
71
### bind
C
clevercong 已提交
72 73 74 75 76

bind\(address: NetAddress\): Promise<void\>

绑定IP地址和端口,端口可以指定或由系统随机分配。使用Promise方式作为异步方法。

C
clevercong 已提交
77 78
**需要权限**:ohos.permission.INTERNET

C
clevercong 已提交
79
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
80

C
clevercong 已提交
81
**参数:**
C
clevercong 已提交
82

C
clevercong 已提交
83 84
| 参数名  | 类型                               | 必填 | 说明                                                   |
| ------- | ---------------------------------- | ---- | ------------------------------------------------------ |
C
clevercong 已提交
85
| address | [NetAddress](#netaddress) | 是   | 目标地址信息,参考[NetAddress](#netaddress)。 |
C
clevercong 已提交
86 87


C
clevercong 已提交
88
**返回值:**
C
clevercong 已提交
89

C
clevercong 已提交
90 91 92
| 类型            | 说明                                       |
| :-------------- | :----------------------------------------- |
| Promise\<void\> | 以Promise形式异步返回UDPSocket绑定的结果。 |
C
clevercong 已提交
93

C
clevercong 已提交
94
**示例:**
C
clevercong 已提交
95

Z
zengyawen 已提交
96
```js
C
clevercong 已提交
97 98 99 100 101 102 103 104
let udp = socket.constructUDPSocketInstance();
let promise = udp.bind({address: '192.168.xx.xxx', port: 8080, family: 1});
promise .then(() => {
  console.log('bind success');
}).catch(err => {
  console.log('bind fail');
});
```
C
clevercong 已提交
105 106


C
clevercong 已提交
107
### send
C
clevercong 已提交
108 109 110 111 112

send\(options: UDPSendOptions, callback: AsyncCallback<void\>\): void

通过UDPSocket连接发送数据。使用callback方式作为异步方法。

C
clevercong 已提交
113 114
**需要权限**:ohos.permission.INTERNET

C
clevercong 已提交
115
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
116

C
clevercong 已提交
117 118 119 120
**参数:**

| 参数名   | 类型                                     | 必填 | 说明                                                         |
| -------- | ---------------------------------------- | ---- | ------------------------------------------------------------ |
C
clevercong 已提交
121
| options  | [UDPSendOptions](#udpsendoptions) | 是   | UDPSocket发送参数,参考[UDPSendOptions](#udpsendoptions)。 |
C
clevercong 已提交
122 123 124 125
| callback | AsyncCallback\<void\>                    | 是   | 回调函数。                                                   |

**示例:**

Z
zengyawen 已提交
126
```js
C
clevercong 已提交
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
let udp = socket.constructUDPSocketInstance();
udp.send({
  data:'Hello, server!',
  address: {
	address:'192.168.xx.xxx',
	port:xxxx,
	family:1
  }
}, err=> {
	if (err) {
	  console.log('send fail');
	  return;
	}
	console.log('send success');
})
```
C
clevercong 已提交
143 144


C
clevercong 已提交
145
### send
C
clevercong 已提交
146 147 148 149 150

send\(options: UDPSendOptions\): Promise<void\>

通过UDPSocket连接发送数据。使用Promise方式作为异步方法。

C
clevercong 已提交
151 152
**需要权限**:ohos.permission.INTERNET

C
clevercong 已提交
153
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
154

C
clevercong 已提交
155
**参数:**
C
clevercong 已提交
156

C
clevercong 已提交
157 158
| 参数名  | 类型                                     | 必填 | 说明                                                         |
| ------- | ---------------------------------------- | ---- | ------------------------------------------------------------ |
C
clevercong 已提交
159
| options | [UDPSendOptions](#udpsendoptions) | 是   | UDPSocket发送参数,参考[UDPSendOptions](#udpsendoptions)。 |
C
clevercong 已提交
160

C
clevercong 已提交
161
**返回值:**
C
clevercong 已提交
162

C
clevercong 已提交
163 164 165
| 类型            | 说明                                           |
| :-------------- | :--------------------------------------------- |
| Promise\<void\> | 以Promise形式返回UDPSocket连接发送数据的结果。 |
C
clevercong 已提交
166

C
clevercong 已提交
167
**示例:**
C
clevercong 已提交
168

Z
zengyawen 已提交
169
```js
C
clevercong 已提交
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
let udp = socket.constructUDPSocketInstance();
let promise = udp.send({
  data:'Hello, server!',
  address: {
	address:'192.168.xx.xxx',
	port:xxxx,
	family:1
  }
});
promise.then(() => {
  console.log('send success');
}).catch(err => {
  console.log('send fail');
});
```
C
clevercong 已提交
185 186


C
clevercong 已提交
187
### close
C
clevercong 已提交
188 189 190 191 192

close\(callback: AsyncCallback<void\>\): void

关闭UDPSocket连接。使用callback方式作为异步方法。

C
clevercong 已提交
193 194
**需要权限**:ohos.permission.INTERNET

C
clevercong 已提交
195
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
196

C
clevercong 已提交
197
**参数:**
C
clevercong 已提交
198

C
clevercong 已提交
199 200 201
| 参数名   | 类型                  | 必填 | 说明       |
| -------- | --------------------- | ---- | ---------- |
| callback | AsyncCallback\<void\> | 是   | 回调函数。 |
C
clevercong 已提交
202

C
clevercong 已提交
203
**示例:**
C
clevercong 已提交
204

Z
zengyawen 已提交
205
```js
C
clevercong 已提交
206 207 208 209 210 211 212 213 214
let udp = socket.constructUDPSocketInstance();
udp.close(err => {
  if (err) {
	console.log('close fail');
	return;
  }
  console.log('close success');
})
```
C
clevercong 已提交
215 216


C
clevercong 已提交
217
### close
C
clevercong 已提交
218 219 220 221 222

close\(\): Promise<void\>

关闭UDPSocket连接。使用Promise方式作为异步方法。

C
clevercong 已提交
223 224
**需要权限**:ohos.permission.INTERNET

C
clevercong 已提交
225
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
226

C
clevercong 已提交
227
**返回值:**
C
clevercong 已提交
228

C
clevercong 已提交
229 230 231
| 类型            | 说明                                       |
| :-------------- | :----------------------------------------- |
| Promise\<void\> | 以Promise形式返回关闭UDPSocket连接的结果。 |
C
clevercong 已提交
232

C
clevercong 已提交
233
**示例:**
C
clevercong 已提交
234

Z
zengyawen 已提交
235
```js
C
clevercong 已提交
236 237 238 239 240 241 242 243
let udp = socket.constructUDPSocketInstance();
let promise = udp.close();
promise.then(() => {
  console.log('close success');
}).catch(err => {
  console.log('close fail');
});
```
C
clevercong 已提交
244 245


C
clevercong 已提交
246
### getState
C
clevercong 已提交
247 248 249 250 251 252

getState\(callback: AsyncCallback<SocketStateBase\>\): void

获取UDPSocket状态。使用callback方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
C
clevercong 已提交
253 254 255
>[bind](#bind)方法调用成功后,才可调用此方法。

**需要权限**:ohos.permission.INTERNET
C
clevercong 已提交
256

C
clevercong 已提交
257
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
258

C
clevercong 已提交
259 260 261 262
**参数:**

| 参数名   | 类型                                                   | 必填 | 说明       |
| -------- | ------------------------------------------------------ | ---- | ---------- |
C
clevercong 已提交
263
| callback | AsyncCallback<[SocketStateBase](#socketstatebase)> | 是   | 回调函数。 |
C
clevercong 已提交
264 265 266

**示例:**

Z
zengyawen 已提交
267
```js
C
clevercong 已提交
268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283
let udp = socket.constructUDPSocketInstance();
udp.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => {
  if (err) {
	console.log('bind fail');
	return;
  }
  console.log('bind success');
  udp.getState((err, data) => {
	if (err) {
	  console.log('getState fail');
	  return;
	}
	console.log('getState success:' + JSON.stringify(data));
  })
})
```
C
clevercong 已提交
284 285


C
clevercong 已提交
286
### getState
C
clevercong 已提交
287 288 289 290 291 292

getState\(\): Promise<SocketStateBase\>

获取UDPSocket状态。使用Promise方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
C
clevercong 已提交
293 294 295
>[bind](#bind)方法调用成功后,才可调用此方法。

**需要权限**:ohos.permission.INTERNET
C
clevercong 已提交
296

C
clevercong 已提交
297
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
298

C
clevercong 已提交
299
**返回值:**
C
clevercong 已提交
300

C
clevercong 已提交
301 302
| 类型                                             | 说明                                       |
| :----------------------------------------------- | :----------------------------------------- |
C
clevercong 已提交
303
| Promise<[SocketStateBase](#socketstatebase)> | 以Promise形式返回获取UDPSocket状态的结果。 |
C
clevercong 已提交
304

C
clevercong 已提交
305
**示例:**
C
clevercong 已提交
306

Z
zengyawen 已提交
307
```js
C
clevercong 已提交
308 309 310 311 312 313 314 315 316 317 318 319 320 321 322
let udp = socket.constructUDPSocketInstance();
udp.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => {
  if (err) {
	console.log('bind fail');
	return;
  }
  console.log('bind success');
  let promise = udp.getState({});
  promise.then(data => {
	console.log('getState success:' + JSON.stringify(data));
  }).catch(err => {
	console.log('getState fail');
  });
})
```
C
clevercong 已提交
323 324


C
clevercong 已提交
325
### setExtraOptions
C
clevercong 已提交
326 327 328 329 330 331

setExtraOptions\(options: UDPExtraOptions, callback: AsyncCallback<void\>\): void

设置UDPSocket连接的其他属性。使用callback方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
C
clevercong 已提交
332 333 334
>[bind](#bind)方法调用成功后,才可调用此方法。

**需要权限**:ohos.permission.INTERNET
C
clevercong 已提交
335

C
clevercong 已提交
336
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
337

C
clevercong 已提交
338 339 340 341
**参数:**

| 参数名   | 类型                                     | 必填 | 说明                                                         |
| -------- | ---------------------------------------- | ---- | ------------------------------------------------------------ |
C
clevercong 已提交
342
| options  | [UDPExtraOptions](#udpextraoptions) | 是   | UDPSocket连接的其他属性,参考[UDPExtraOptions](#udpextraoptions)。 |
C
clevercong 已提交
343 344 345 346 347
| callback | AsyncCallback\<void\>                    | 是   | 回调函数。                                                   |


**示例:**

Z
zengyawen 已提交
348
```js
C
clevercong 已提交
349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370
let udp = socket.constructUDPSocketInstance();
udp.bind({address:'192.168.xx.xxx', port:xxxx, family:1}, err=> {
  if (err) {
	console.log('bind fail');
	return;
  }
  console.log('bind success');
  udp.setExtraOptions({
	receiveBufferSize:1000,
	sendBufferSize:1000,
	reuseAddress:false,
	socketTimeout:6000,
	broadcast:true
  }, err=> {
	if (err) {
	  console.log('setExtraOptions fail');
	  return;
	}
	console.log('setExtraOptions success');
  })
})
```
C
clevercong 已提交
371 372


C
clevercong 已提交
373
### setExtraOptions
C
clevercong 已提交
374 375 376 377 378 379

setExtraOptions\(options: UDPExtraOptions\): Promise<void\>

设置UDPSocket连接的其他属性。使用Promise方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
C
clevercong 已提交
380 381 382
>[bind](#bind)方法调用成功后,才可调用此方法。

**需要权限**:ohos.permission.INTERNET
C
clevercong 已提交
383

C
clevercong 已提交
384
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
385

C
clevercong 已提交
386 387 388 389
**参数:**

| 参数名  | 类型                                     | 必填 | 说明                                                         |
| ------- | ---------------------------------------- | ---- | ------------------------------------------------------------ |
C
clevercong 已提交
390
| options | [UDPExtraOptions](#udpextraoptions) | 是   | UDPSocket连接的其他属性,参考[UDPExtraOptions](#udpextraoptions)。 |
C
clevercong 已提交
391 392 393 394 395 396 397 398 399

**返回值:**

| 类型            | 说明                                                 |
| :-------------- | :--------------------------------------------------- |
| Promise\<void\> | 以Promise形式返回设置UDPSocket连接的其他属性的结果。 |

**示例:**

Z
zengyawen 已提交
400
```js
C
clevercong 已提交
401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420
let udp = socket.constructUDPSocketInstance();
let promise = udp.bind({address:'192.168.xx.xxx', port:xxxx, family:1});
promise.then(() => {
  console.log('bind success');
  let promise1 = udp.setExtraOptions({
	receiveBufferSize:1000,
	sendBufferSize:1000,
	reuseAddress:false,
	socketTimeout:6000,
	broadcast:true
  });
  promise1.then(() => {
	console.log('setExtraOptions success');
  }).catch(err => {
	console.log('setExtraOptions fail');
  });
}).catch(err => {
  console.log('bind fail');
});
```
C
clevercong 已提交
421 422


C
clevercong 已提交
423
### on\('message'\)
C
clevercong 已提交
424 425 426 427 428

on\(type: 'message', callback: Callback<\{message: ArrayBuffer, remoteInfo: SocketRemoteInfo\}\>\): void

订阅UDPSocket连接的接收消息事件。使用callback方式作为异步方法。

C
clevercong 已提交
429
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
430

C
clevercong 已提交
431
**参数:**
C
clevercong 已提交
432

C
clevercong 已提交
433 434 435
| 参数名   | 类型                                                         | 必填 | 说明                                      |
| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------- |
| type     | string                                                       | 是   | 订阅的事件类型。'message':接收消息事件。 |
C
clevercong 已提交
436
| callback | Callback<{message: ArrayBuffer, remoteInfo: [SocketRemoteInfo](#socketremoteinfo)}> | 是   | 回调函数。                                |
C
clevercong 已提交
437

C
clevercong 已提交
438
**示例:**
C
clevercong 已提交
439

Z
zengyawen 已提交
440
```js
C
clevercong 已提交
441 442
let udp = socket.constructUDPSocketInstance();
udp.on('message', value => {
C
clevercong 已提交
443
	console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo);
C
clevercong 已提交
444 445
});
```
C
clevercong 已提交
446 447


C
clevercong 已提交
448
### off\('message'\)
C
clevercong 已提交
449 450 451 452 453 454 455 456

off\(type: 'message', callback?: Callback<\{message: ArrayBuffer, remoteInfo: SocketRemoteInfo\}\>\): void

取消订阅UDPSocket连接的接收消息事件。使用callback方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

C
clevercong 已提交
457
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
458

C
clevercong 已提交
459
**参数:**
C
clevercong 已提交
460

C
clevercong 已提交
461 462 463
| 参数名   | 类型                                                         | 必填 | 说明                                      |
| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------- |
| type     | string                                                       | 是   | 订阅的事件类型。'message':接收消息事件。 |
C
clevercong 已提交
464
| callback | Callback<{message: ArrayBuffer, remoteInfo: [SocketRemoteInfo](#socketremoteinfo)}> | 否   | 回调函数。                                |
C
clevercong 已提交
465

C
clevercong 已提交
466
**示例:**
C
clevercong 已提交
467

Z
zengyawen 已提交
468
```js
C
clevercong 已提交
469 470
let udp = socket.constructUDPSocketInstance();
let callback = value =>{
C
clevercong 已提交
471
	console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo);
C
clevercong 已提交
472 473 474 475 476 477
}
udp.on('message', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
udp.off('message', callback);
udp.off('message');
```
C
clevercong 已提交
478 479


C
clevercong 已提交
480
### on\('listening' | 'close'\)
C
clevercong 已提交
481 482 483 484 485

on\(type: 'listening' | 'close', callback: Callback<void\>\): void

订阅UDPSocket连接的数据包消息事件或关闭事件。使用callback方式作为异步方法。

C
clevercong 已提交
486
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
487

C
clevercong 已提交
488
**参数:**
C
clevercong 已提交
489

C
clevercong 已提交
490 491 492 493
| 参数名   | 类型             | 必填 | 说明                                                         |
| -------- | ---------------- | ---- | ------------------------------------------------------------ |
| type     | string           | 是   | 订阅的事件类型。<br />- 'listening':数据包消息事件。<br />- 'close':关闭事件。 |
| callback | Callback\<void\> | 是   | 回调函数。                                                   |
C
clevercong 已提交
494

C
clevercong 已提交
495
**示例:**
C
clevercong 已提交
496

Z
zengyawen 已提交
497
```js
C
clevercong 已提交
498 499
let udp = socket.constructUDPSocketInstance();
udp.on('listening', () => {
C
clevercong 已提交
500
	console.log("on listening success");
C
clevercong 已提交
501 502 503 504 505
});
udp.on('close', () => {
	console.log("on close success" );
});
```
C
clevercong 已提交
506 507


C
clevercong 已提交
508
### off\('listening' | 'close'\)
C
clevercong 已提交
509 510 511 512 513 514 515 516

off\(type: 'listening' | 'close', callback?: Callback<void\>\): void

取消订阅UDPSocket连接的数据包消息事件或关闭事件。使用callback方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

C
clevercong 已提交
517
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
518

C
clevercong 已提交
519 520 521 522 523 524 525 526 527
**参数:**

| 参数名   | 类型             | 必填 | 说明                                                         |
| -------- | ---------------- | ---- | ------------------------------------------------------------ |
| type     | string           | 是   | 订阅事件类型。<br />- 'listening':数据包消息事件。<br />- 'close':关闭事件。 |
| callback | Callback\<void\> | 否   | 回调函数。                                                   |

**示例:**

Z
zengyawen 已提交
528
```js
C
clevercong 已提交
529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544
let udp = socket.constructUDPSocketInstance();
let callback1 = () =>{
	console.log("on listening, success");
}
udp.on('listening', callback1);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
udp.off('listening', callback1);
udp.off('listening');
let callback2 = () =>{
	console.log("on close, success");
}
udp.on('close', callback2);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
udp.off('close', callback2);
udp.off('close');
```
C
clevercong 已提交
545 546


C
clevercong 已提交
547
### on\('error'\)
C
clevercong 已提交
548 549 550 551 552

on\(type: 'error', callback: ErrorCallback\): void

订阅UDPSocket连接的error事件。使用callback方式作为异步方法。

C
clevercong 已提交
553
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
554

C
clevercong 已提交
555
**参数:**
C
clevercong 已提交
556

C
clevercong 已提交
557 558 559 560
| 参数名   | 类型          | 必填 | 说明                                 |
| -------- | ------------- | ---- | ------------------------------------ |
| type     | string        | 是   | 订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 是   | 回调函数。                           |
C
clevercong 已提交
561 562


C
clevercong 已提交
563
**示例:**
C
clevercong 已提交
564

Z
zengyawen 已提交
565
```js
Z
zengyawen 已提交
566
let udp = socket.constructUDPSocketInstance();
C
clevercong 已提交
567 568 569 570
udp.on('error', err => {
	console.log("on error, err:" + JSON.stringify(err))
});
```
C
clevercong 已提交
571 572


C
clevercong 已提交
573
### off\('error'\)
C
clevercong 已提交
574 575 576 577 578 579 580 581

off\(type: 'error', callback?: ErrorCallback\): void

取消订阅UDPSocket连接的error事件。使用callback方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

C
clevercong 已提交
582
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
583

C
clevercong 已提交
584
**参数:**
C
clevercong 已提交
585

C
clevercong 已提交
586 587 588 589
| 参数名   | 类型          | 必填 | 说明                                 |
| -------- | ------------- | ---- | ------------------------------------ |
| type     | string        | 是   | 订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 否   | 回调函数。                           |
C
clevercong 已提交
590

C
clevercong 已提交
591
**示例:**
C
clevercong 已提交
592

Z
zengyawen 已提交
593
```js
Z
zengyawen 已提交
594
let udp = socket.constructUDPSocketInstance();
C
clevercong 已提交
595 596 597 598 599 600 601 602
let callback = err =>{
	console.log("on error, err:" + JSON.stringify(err));
}
udp.on('error', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
udp.off('error', callback);
udp.off('error');
```
C
clevercong 已提交
603 604


C
clevercong 已提交
605
## NetAddress
C
clevercong 已提交
606 607 608

目标地址信息。

C
clevercong 已提交
609 610
**系统能力**:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

C
clevercong 已提交
611 612 613 614 615 616
| 参数名  | 类型   | 必填 | 说明                                                         |
| ------- | ------ | ---- | ------------------------------------------------------------ |
| address | string | 是   | 本地绑定的ip地址。                                           |
| port    | number | 否   | 端口号 ,范围0~65535。如果不指定系统随机分配端口。           |
| family  | number | 否   | 网络协议类型,可选类型:<br />- 1:IPv4<br />- 2:IPv6<br />默认为1。 |

C
clevercong 已提交
617
## UDPSendOptions
C
clevercong 已提交
618 619 620

UDPSocket发送参数。

C
clevercong 已提交
621 622
**系统能力**:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

C
clevercong 已提交
623 624
| 参数名  | 类型                               | 必填 | 说明           |
| ------- | ---------------------------------- | ---- | -------------- |
625
| data    | string \| ArrayBuffer<sup>8+</sup>                          | 是   | 发送的数据。   |
C
clevercong 已提交
626
| address | [NetAddress](#netaddress) | 是   | 目标地址信息。 |
C
clevercong 已提交
627

C
clevercong 已提交
628
## UDPExtraOptions
C
clevercong 已提交
629 630 631

UDPSocket连接的其他属性。

C
clevercong 已提交
632 633
**系统能力**:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

C
clevercong 已提交
634 635 636 637 638 639 640 641
| 参数名            | 类型    | 必填 | 说明                             |
| ----------------- | ------- | ---- | -------------------------------- |
| broadcast         | boolean | 否   | 是否可以发送广播。默认为false。  |
| receiveBufferSize | number  | 否   | 接收缓冲区大小(单位:Byte)。   |
| sendBufferSize    | number  | 否   | 发送缓冲区大小(单位:Byte)。   |
| reuseAddress      | boolean | 否   | 是否重用地址。默认为false。      |
| socketTimeout     | number  | 否   | 套接字超时时间,单位毫秒(ms)。 |

C
clevercong 已提交
642
## SocketStateBase
C
clevercong 已提交
643 644 645

Socket的状态信息。

C
clevercong 已提交
646 647
**系统能力**:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

C
clevercong 已提交
648 649 650 651 652 653
| 参数名      | 类型    | 必填 | 说明       |
| ----------- | ------- | ---- | ---------- |
| isBound     | boolean | 是   | 是否绑定。 |
| isClose     | boolean | 是   | 是否关闭。 |
| isConnected | boolean | 是   | 是否连接。 |

C
clevercong 已提交
654
## SocketRemoteInfo
C
clevercong 已提交
655 656 657

Socket的连接信息。

C
clevercong 已提交
658 659
**系统能力**:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

C
clevercong 已提交
660 661 662 663 664 665 666
| 参数名  | 类型   | 必填 | 说明                                                         |
| ------- | ------ | ---- | ------------------------------------------------------------ |
| address | string | 是   | 本地绑定的ip地址。                                           |
| family  | string | 是   | 网络协议类型,可选类型:<br />- IPv4<br />- IPv6<br />默认为IPv4。 |
| port    | number | 是   | 端口号,范围0~65535。                                        |
| size    | number | 是   | 服务器响应信息的字节长度。                                   |

C
clevercong 已提交
667
## socket.constructTCPSocketInstance
C
clevercong 已提交
668 669 670 671 672

constructTCPSocketInstance\(\): TCPSocket

创建一个TCPSocket对象。

C
clevercong 已提交
673
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
674

C
clevercong 已提交
675
**返回值:**
C
clevercong 已提交
676 677 678

  | 类型                               | 说明                    |
  | :--------------------------------- | :---------------------- |
C
clevercong 已提交
679
  | [TCPSocket](#tcpsocket) | 返回一个TCPSocket对象。 |
C
clevercong 已提交
680

C
clevercong 已提交
681
**示例:**
C
clevercong 已提交
682

Z
zengyawen 已提交
683
```js
C
clevercong 已提交
684 685
let tcp = socket.constructTCPSocketInstance();
```
C
clevercong 已提交
686 687


C
clevercong 已提交
688
## TCPSocket
C
clevercong 已提交
689

C
clevercong 已提交
690
TCPSocket连接。在调用TCPSocket的方法前,需要先通过[socket.constructTCPSocketInstance](#socketconstructtcpsocketinstance)创建TCPSocket对象。
C
clevercong 已提交
691

C
clevercong 已提交
692
### bind
C
clevercong 已提交
693 694 695 696 697

bind\(address: NetAddress, callback: AsyncCallback<void\>\): void

绑定IP地址和端口,端口可以指定或由系统随机分配。使用callback方法作为异步方法。

C
clevercong 已提交
698 699
**需要权限**:ohos.permission.INTERNET

C
clevercong 已提交
700
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
701

C
clevercong 已提交
702
**参数:**
C
clevercong 已提交
703

C
clevercong 已提交
704 705
| 参数名   | 类型                               | 必填 | 说明                                                   |
| -------- | ---------------------------------- | ---- | ------------------------------------------------------ |
C
clevercong 已提交
706
| address  | [NetAddress](#netaddress) | 是   | 目标地址信息,参考[NetAddress](#netaddress)。 |
C
clevercong 已提交
707
| callback | AsyncCallback\<void\>              | 是   | 回调函数。                                             |
C
clevercong 已提交
708 709


C
clevercong 已提交
710
**示例:**
C
clevercong 已提交
711

Z
zengyawen 已提交
712
```js
C
clevercong 已提交
713 714 715 716 717 718 719 720 721
let tcp = socket.constructTCPSocketInstance();
tcp.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => {
  if (err) {
	console.log('bind fail');
	return;
  }
  console.log('bind success');
})
```
C
clevercong 已提交
722 723


C
clevercong 已提交
724
### bind
C
clevercong 已提交
725

C
clevercong 已提交
726
bind\(address: NetAddress\): Promise<void\>
C
clevercong 已提交
727 728 729

绑定IP地址和端口,端口可以指定或由系统随机分配。使用Promise方法作为异步方法。

C
clevercong 已提交
730 731
**需要权限**:ohos.permission.INTERNET

C
clevercong 已提交
732
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
733

C
clevercong 已提交
734
**参数:**
C
clevercong 已提交
735

C
clevercong 已提交
736 737
| 参数名  | 类型                               | 必填 | 说明                                                   |
| ------- | ---------------------------------- | ---- | ------------------------------------------------------ |
C
clevercong 已提交
738
| address | [NetAddress](#netaddress) | 是   | 目标地址信息,参考[NetAddress](#netaddress)。 |
C
clevercong 已提交
739

C
clevercong 已提交
740
**返回值:**
C
clevercong 已提交
741

C
clevercong 已提交
742 743 744
| 类型            | 说明                                                     |
| :-------------- | :------------------------------------------------------- |
| Promise\<void\> | 以Promise形式返回TCPSocket绑定本机的IP地址和端口的结果。 |
C
clevercong 已提交
745

C
clevercong 已提交
746
**示例:**
C
clevercong 已提交
747

Z
zengyawen 已提交
748
```js
C
clevercong 已提交
749 750 751 752 753 754 755 756
let tcp = socket.constructTCPSocketInstance();
let promise = tcp.bind({address: '192.168.xx.xxx', port: xxxx, family: 1});
promise.then(() => {
  console.log('bind success');
}).catch(err => {
  console.log('bind fail');
});
```
C
clevercong 已提交
757 758


C
clevercong 已提交
759
### connect
C
clevercong 已提交
760 761 762 763 764

connect\(options: TCPConnectOptions, callback: AsyncCallback<void\>\): void

连接到指定的IP地址和端口。使用callback方法作为异步方法。

C
clevercong 已提交
765 766
**需要权限**:ohos.permission.INTERNET

C
clevercong 已提交
767
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
768

C
clevercong 已提交
769
**参数:**
C
clevercong 已提交
770

C
clevercong 已提交
771 772
| 参数名   | 类型                                     | 必填 | 说明                                                         |
| -------- | ---------------------------------------- | ---- | ------------------------------------------------------------ |
C
clevercong 已提交
773
| options  | [TCPConnectOptions](#tcpconnectoptions) | 是   | TCPSocket连接的参数,参考[TCPConnectOptions](#tcpconnectoptions)。 |
C
clevercong 已提交
774
| callback | AsyncCallback\<void\>                    | 是   | 回调函数。                                                   |
C
clevercong 已提交
775

C
clevercong 已提交
776
**示例:**
C
clevercong 已提交
777

Z
zengyawen 已提交
778
```js
C
clevercong 已提交
779 780 781 782 783 784 785 786 787
let tcp = socket.constructTCPSocketInstance();
tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000}, err => {
  if (err) {
	console.log('connect fail');
	return;
  }
  console.log('connect success');
})
```
C
clevercong 已提交
788 789


C
clevercong 已提交
790
### connect
C
clevercong 已提交
791 792 793 794 795

connect\(options: TCPConnectOptions\): Promise<void\>

连接到指定的IP地址和端口。使用promise方法作为异步方法。

C
clevercong 已提交
796 797
**需要权限**:ohos.permission.INTERNET

C
clevercong 已提交
798
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
799

C
clevercong 已提交
800
**参数:**
C
clevercong 已提交
801

C
clevercong 已提交
802 803
| 参数名  | 类型                                     | 必填 | 说明                                                         |
| ------- | ---------------------------------------- | ---- | ------------------------------------------------------------ |
C
clevercong 已提交
804
| options | [TCPConnectOptions](#tcpconnectoptions) | 是   | TCPSocket连接的参数,参考[TCPConnectOptions](#tcpconnectoptions)。 |
C
clevercong 已提交
805

C
clevercong 已提交
806
**返回值:**
C
clevercong 已提交
807

C
clevercong 已提交
808 809 810
| 类型            | 说明                                                       |
| :-------------- | :--------------------------------------------------------- |
| Promise\<void\> | 以Promise形式返回TCPSocket连接到指定的IP地址和端口的结果。 |
C
clevercong 已提交
811

C
clevercong 已提交
812
**示例:**
C
clevercong 已提交
813

Z
zengyawen 已提交
814
```js
C
clevercong 已提交
815 816 817 818 819 820 821 822
let tcp = socket.constructTCPSocketInstance();
let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
promise.then(() => {
  console.log('connect success')
}).catch(err => {
  console.log('connect fail');
});
```
C
clevercong 已提交
823 824


C
clevercong 已提交
825
### send
C
clevercong 已提交
826 827 828 829 830 831

send\(options: TCPSendOptions, callback: AsyncCallback<void\>\): void

通过TCPSocket连接发送数据。使用callback方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
C
clevercong 已提交
832 833 834
>[connect](#connect)方法调用成功后,才可调用此方法。

**需要权限**:ohos.permission.INTERNET
C
clevercong 已提交
835

C
clevercong 已提交
836
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
837

C
clevercong 已提交
838 839 840 841
**参数:**

| 参数名   | 类型                                    | 必填 | 说明                                                         |
| -------- | --------------------------------------- | ---- | ------------------------------------------------------------ |
C
clevercong 已提交
842
| options  | [TCPSendOptions](#tcpsendoptions) | 是   | TCPSocket发送请求的参数,参考[TCPSendOptions](#tcpsendoptions)。 |
C
clevercong 已提交
843 844 845 846
| callback | AsyncCallback\<void\>                   | 是   | 回调函数。                                                   |

**示例:**

Z
zengyawen 已提交
847
```js
C
clevercong 已提交
848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864
let tcp = socket.constructTCPSocketInstance();
let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
promise.then(() => {
  console.log('connect success');
  tcp.send({
	data:'Hello, server!'
  },err => {
	if (err) {
	  console.log('send fail');
	  return;
	}
	console.log('send success');
  })
}).catch(err => {
  console.log('connect fail');
});
```
C
clevercong 已提交
865 866


C
clevercong 已提交
867
### send
C
clevercong 已提交
868 869 870 871 872 873

send\(options: TCPSendOptions\): Promise<void\>

通过TCPSocket连接发送数据。使用Promise方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
C
clevercong 已提交
874 875 876
>[connect](#connect)方法调用成功后,才可调用此方法。

**需要权限**:ohos.permission.INTERNET
C
clevercong 已提交
877

C
clevercong 已提交
878
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
879

C
clevercong 已提交
880 881 882 883
**参数:**

| 参数名  | 类型                                    | 必填 | 说明                                                         |
| ------- | --------------------------------------- | ---- | ------------------------------------------------------------ |
C
clevercong 已提交
884
| options | [TCPSendOptions](#tcpsendoptions) | 是   | TCPSocket发送请求的参数,参考[TCPSendOptions](#tcpsendoptions)。 |
C
clevercong 已提交
885 886 887 888 889 890 891 892 893

**返回值:**

| 类型            | 说明                                               |
| :-------------- | :------------------------------------------------- |
| Promise\<void\> | 以Promise形式返回通过TCPSocket连接发送数据的结果。 |

**示例:**

Z
zengyawen 已提交
894
```js
C
clevercong 已提交
895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910
let tcp = socket.constructTCPSocketInstance();
let promise1 = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
promise1.then(() => {
  console.log('connect success');
  let promise2 = tcp.send({
	data:'Hello, server!'
  });
  promise2.then(() => {
	console.log('send success');
  }).catch(err => {
	console.log('send fail');
  });
}).catch(err => {
  console.log('connect fail');
});
```
C
clevercong 已提交
911 912


C
clevercong 已提交
913
### close
C
clevercong 已提交
914 915 916 917 918

close\(callback: AsyncCallback<void\>\): void

关闭TCPSocket连接。使用callback方式作为异步方法。

C
clevercong 已提交
919 920
**需要权限**:ohos.permission.INTERNET

C
clevercong 已提交
921
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
922

C
clevercong 已提交
923
**参数:**
C
clevercong 已提交
924

C
clevercong 已提交
925 926 927
| 参数名   | 类型                  | 必填 | 说明       |
| -------- | --------------------- | ---- | ---------- |
| callback | AsyncCallback\<void\> | 是   | 回调函数。 |
C
clevercong 已提交
928 929


C
clevercong 已提交
930
**示例:**
C
clevercong 已提交
931

Z
zengyawen 已提交
932
```js
C
clevercong 已提交
933 934 935 936 937 938 939 940 941
let tcp = socket.constructTCPSocketInstance();
tcp.close(err => {
  if (err) {
	console.log('close fail');
	return;
  }
  console.log('close success');
})
```
C
clevercong 已提交
942 943


C
clevercong 已提交
944
### close
C
clevercong 已提交
945 946 947 948 949

close\(\): Promise<void\>

关闭TCPSocket连接。使用Promise方式作为异步方法。

C
clevercong 已提交
950 951
**需要权限**:ohos.permission.INTERNET

C
clevercong 已提交
952
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
953

C
clevercong 已提交
954
**返回值:**
C
clevercong 已提交
955

C
clevercong 已提交
956 957 958
| 类型            | 说明                                       |
| :-------------- | :----------------------------------------- |
| Promise\<void\> | 以Promise形式返回关闭TCPSocket连接的结果。 |
C
clevercong 已提交
959

C
clevercong 已提交
960
**示例:**
C
clevercong 已提交
961

Z
zengyawen 已提交
962
```js
C
clevercong 已提交
963 964 965 966 967 968 969 970
let tcp = socket.constructTCPSocketInstance();
let promise = tcp.close();
promise.then(() => {
  console.log('close success');
}).catch(err => {
  console.log('close fail');
});
```
C
clevercong 已提交
971 972


C
clevercong 已提交
973
### getRemoteAddress
C
clevercong 已提交
974 975 976 977 978 979

getRemoteAddress\(callback: AsyncCallback<NetAddress\>\): void

获取对端Socket地址。使用callback方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
C
clevercong 已提交
980 981 982
>[connect](#connect)方法调用成功后,才可调用此方法。

**需要权限**:ohos.permission.INTERNET
C
clevercong 已提交
983

C
clevercong 已提交
984
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
985

C
clevercong 已提交
986
**参数:**
C
clevercong 已提交
987

C
clevercong 已提交
988 989
| 参数名   | 类型                                              | 必填 | 说明       |
| -------- | ------------------------------------------------- | ---- | ---------- |
C
clevercong 已提交
990
| callback | AsyncCallback<[NetAddress](#netaddress)> | 是   | 回调函数。 |
C
clevercong 已提交
991

C
clevercong 已提交
992
**示例:**
C
clevercong 已提交
993

Z
zengyawen 已提交
994
```js
C
clevercong 已提交
995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009
let tcp = socket.constructTCPSocketInstance();
let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
promise.then(() => {
  console.log('connect success');
  tcp.getRemoteAddress((err, data) => {
	if (err) {
	  console.log('getRemoteAddressfail');
	  return;
	}
	console.log('getRemoteAddresssuccess:' + JSON.stringify(data));
  })
}).catch(err => {
  console.log('connect fail');
});
```
C
clevercong 已提交
1010 1011


C
clevercong 已提交
1012
### getRemoteAddress
C
clevercong 已提交
1013 1014 1015 1016 1017 1018

getRemoteAddress\(\): Promise<NetAddress\>

获取对端Socket地址。使用Promise方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
C
clevercong 已提交
1019 1020 1021
>[connect](#connect)方法调用成功后,才可调用此方法。

**需要权限**:ohos.permission.INTERNET
C
clevercong 已提交
1022

C
clevercong 已提交
1023
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
1024

C
clevercong 已提交
1025
**返回值:**
C
clevercong 已提交
1026

C
clevercong 已提交
1027 1028
| 类型                                        | 说明                                        |
| :------------------------------------------ | :------------------------------------------ |
C
clevercong 已提交
1029
| Promise<[NetAddress](#netaddress)> | 以Promise形式返回获取对端socket地址的结果。 |
C
clevercong 已提交
1030

C
clevercong 已提交
1031
**示例:**
C
clevercong 已提交
1032

Z
zengyawen 已提交
1033
```js
C
clevercong 已提交
1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047
let tcp = socket.constructTCPSocketInstance();
let promise1 = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
promise1.then(() => {
  console.log('connect success');
  let promise2 = tcp.getRemoteAddress();
  promise2.then(() => {
	console.log('getRemoteAddress success:' + JSON.stringify(data));
  }).catch(err => {
	console.log('getRemoteAddressfail');
  });
}).catch(err => {
  console.log('connect fail');
});
```
C
clevercong 已提交
1048 1049


C
clevercong 已提交
1050
### getState
C
clevercong 已提交
1051 1052 1053 1054 1055 1056

getState\(callback: AsyncCallback<SocketStateBase\>\): void

获取TCPSocket状态。使用callback方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
C
clevercong 已提交
1057 1058 1059
>[bind](#bind)或[connect](#connect)方法调用成功后,才可调用此方法。

**需要权限**:ohos.permission.INTERNET
C
clevercong 已提交
1060

C
clevercong 已提交
1061
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
1062

C
clevercong 已提交
1063
**参数:**
C
clevercong 已提交
1064

C
clevercong 已提交
1065 1066
| 参数名   | 类型                                                   | 必填 | 说明       |
| -------- | ------------------------------------------------------ | ---- | ---------- |
C
clevercong 已提交
1067
| callback | AsyncCallback<[SocketStateBase](#socketstatebase)> | 是   | 回调函数。 |
C
clevercong 已提交
1068 1069


C
clevercong 已提交
1070
**示例:**
C
clevercong 已提交
1071

Z
zengyawen 已提交
1072
```js
C
clevercong 已提交
1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087
let tcp = socket.constructTCPSocketInstance();
let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
promise.then(() => {
  console.log('connect success');
  tcp.getState((err, data) => {
	if (err) {
	  console.log('getState fail');
	  return;
	}
	console.log('getState success:' + JSON.stringify(data));
  });
}).catch(err => {
  console.log('connect fail');
});
```
C
clevercong 已提交
1088 1089


C
clevercong 已提交
1090
### getState
C
clevercong 已提交
1091 1092 1093 1094 1095 1096

getState\(\): Promise<SocketStateBase\>

获取TCPSocket状态。使用Promise方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
C
clevercong 已提交
1097 1098 1099
>[bind](#bind)或[connect](#connect)方法调用成功后,才可调用此方法。

**需要权限**:ohos.permission.INTERNET
C
clevercong 已提交
1100

C
clevercong 已提交
1101
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
1102

C
clevercong 已提交
1103
**返回值:**
C
clevercong 已提交
1104

C
clevercong 已提交
1105 1106
| 类型                                             | 说明                                       |
| :----------------------------------------------- | :----------------------------------------- |
C
clevercong 已提交
1107
| Promise<[SocketStateBase](#socketstatebase)> | 以Promise形式返回获取TCPSocket状态的结果。 |
C
clevercong 已提交
1108 1109


C
clevercong 已提交
1110
**示例:**
C
clevercong 已提交
1111

Z
zengyawen 已提交
1112
```js
C
clevercong 已提交
1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126
let tcp = socket.constructTCPSocketInstance();
let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
promise.then(() => {
  console.log('connect success');
  let promise1 = tcp.getState();
  promise1.then(() => {
	console.log('getState success:' + JSON.stringify(data));
  }).catch(err => {
	console.log('getState fail');
  });
}).catch(err => {
  console.log('connect fail');
});
```
C
clevercong 已提交
1127 1128


C
clevercong 已提交
1129
### setExtraOptions
C
clevercong 已提交
1130 1131 1132 1133 1134 1135

setExtraOptions\(options: TCPExtraOptions, callback: AsyncCallback<void\>\): void

设置TCPSocket连接的其他属性。使用callback方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
C
clevercong 已提交
1136 1137 1138
>[bind](#bind)或[connect](#connect)方法调用成功后,才可调用此方法。

**需要权限**:ohos.permission.INTERNET
C
clevercong 已提交
1139

C
clevercong 已提交
1140
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
1141

C
clevercong 已提交
1142 1143 1144 1145
**参数:**

| 参数名   | 类型                                      | 必填 | 说明                                                         |
| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
C
clevercong 已提交
1146
| options  | [TCPExtraOptions](#tcpextraoptions) | 是   | TCPSocket连接的其他属性,参考[TCPExtraOptions](#tcpextraoptions)。 |
C
clevercong 已提交
1147 1148 1149 1150
| callback | AsyncCallback\<void\>                     | 是   | 回调函数。                                                   |

**示例:**

Z
zengyawen 已提交
1151
```js
C
clevercong 已提交
1152 1153 1154 1155 1156 1157 1158 1159
let tcp = socket.constructTCPSocketInstance();
let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
promise.then(() => {
  console.log('connect success');
  tcp.setExtraOptions({
	keepAlive: true,
	OOBInline: true,
	TCPNoDelay: true,
C
clevercong 已提交
1160
	socketLinger: { on:true, linger:10 },
C
clevercong 已提交
1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175
	receiveBufferSize: 1000,
	sendBufferSize: 1000,
	reuseAddress: true,
	socketTimeout: 3000,
  },err => {
	if (err) {
	  console.log('setExtraOptions fail');
	  return;
	}
	console.log('setExtraOptions success');
  });
}).catch(err => {
  console.log('connect fail');
});
```
C
clevercong 已提交
1176 1177


C
clevercong 已提交
1178
### setExtraOptions
C
clevercong 已提交
1179 1180 1181 1182 1183 1184

setExtraOptions\(options: TCPExtraOptions\): Promise<void\>

设置TCPSocket连接的其他属性,使用Promise方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
C
clevercong 已提交
1185 1186 1187
>[bind](#bind)或[connect](#connect)方法调用成功后,才可调用此方法。

**需要权限**:ohos.permission.INTERNET
C
clevercong 已提交
1188

C
clevercong 已提交
1189
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
1190

C
clevercong 已提交
1191 1192 1193 1194
**参数:**

| 参数名  | 类型                                      | 必填 | 说明                                                         |
| ------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
C
clevercong 已提交
1195
| options | [TCPExtraOptions](#tcpextraoptions) | 是   | TCPSocket连接的其他属性,参考[TCPExtraOptions](#tcpextraoptions)。 |
C
clevercong 已提交
1196 1197 1198 1199 1200 1201 1202 1203 1204 1205

**返回值:**

| 类型            | 说明                                                 |
| :-------------- | :--------------------------------------------------- |
| Promise\<void\> | 以Promise形式返回设置TCPSocket连接的其他属性的结果。 |


**示例:**

Z
zengyawen 已提交
1206
```js
C
clevercong 已提交
1207 1208 1209 1210 1211 1212 1213 1214
let tcp = socket.constructTCPSocketInstance();
let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
promise.then(() => {
  console.log('connect success');
  let promise1 = tcp.setExtraOptions({
	keepAlive: true,
	OOBInline: true,
	TCPNoDelay: true,
C
clevercong 已提交
1215
	socketLinger: { on:true, linger:10 },
C
clevercong 已提交
1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229
	receiveBufferSize: 1000,
	sendBufferSize: 1000,
	reuseAddress: true,
	socketTimeout: 3000,
  });
  promise1.then(() => {
	console.log('setExtraOptions success');
  }).catch(err => {
	console.log('setExtraOptions fail');
  });
}).catch(err => {
  console.log('connect fail');
});
```
C
clevercong 已提交
1230 1231


C
clevercong 已提交
1232
### on\('message'\)
C
clevercong 已提交
1233 1234 1235 1236 1237

on\(type: 'message', callback: Callback<\{message: ArrayBuffer, remoteInfo: SocketRemoteInfo\}\>\): void

订阅TCPSocket连接的接收消息事件。使用callback方式作为异步方法。

C
clevercong 已提交
1238
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
1239

C
clevercong 已提交
1240
**参数:**
C
clevercong 已提交
1241

C
clevercong 已提交
1242 1243 1244
| 参数名   | 类型                                                         | 必填 | 说明                                      |
| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------- |
| type     | string                                                       | 是   | 订阅的事件类型。'message':接收消息事件。 |
C
clevercong 已提交
1245
| callback | Callback<{message: ArrayBuffer, remoteInfo: [SocketRemoteInfo](#socketremoteinfo)}> | 是   | 回调函数。                                |
C
clevercong 已提交
1246

C
clevercong 已提交
1247
**示例:**
C
clevercong 已提交
1248

Z
zengyawen 已提交
1249
```js
C
clevercong 已提交
1250 1251 1252 1253 1254
let tcp = socket.constructTCPSocketInstance();
tcp.on('message', value => {
	console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo)
});
```
C
clevercong 已提交
1255 1256


C
clevercong 已提交
1257
### off\('message'\)
C
clevercong 已提交
1258 1259 1260 1261 1262 1263 1264 1265

off\(type: 'message', callback?: Callback<\{message: ArrayBuffer, remoteInfo: SocketRemoteInfo\}\>\): void

取消订阅TCPSocket连接的接收消息事件。使用callback方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

C
clevercong 已提交
1266
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
1267

C
clevercong 已提交
1268
**参数:**
C
clevercong 已提交
1269

C
clevercong 已提交
1270 1271 1272
| 参数名   | 类型                                                         | 必填 | 说明                                      |
| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------- |
| type     | string                                                       | 是   | 订阅的事件类型。'message':接收消息事件。 |
C
clevercong 已提交
1273
| callback | Callback<{message: ArrayBuffer, remoteInfo: [SocketRemoteInfo](#socketremoteinfo)}> | 否   | 回调函数。                                |
C
clevercong 已提交
1274

C
clevercong 已提交
1275
**示例:**
C
clevercong 已提交
1276

Z
zengyawen 已提交
1277
```js
C
clevercong 已提交
1278 1279 1280 1281 1282 1283 1284 1285 1286
let tcp = socket.constructTCPSocketInstance();
let callback = value =>{
	console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo);
}
tcp.on('message', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
tcp.off('message', callback);
tcp.off('message');
```
C
clevercong 已提交
1287 1288


C
clevercong 已提交
1289
### on\('connect' | 'close'\)
C
clevercong 已提交
1290 1291 1292 1293 1294

on\(type: 'connect' | 'close', callback: Callback<void\>\): void

订阅TCPSocket的连接事件或关闭事件。使用callback方式作为异步方法。

C
clevercong 已提交
1295
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
1296

C
clevercong 已提交
1297
**参数:**
C
clevercong 已提交
1298

C
clevercong 已提交
1299 1300 1301 1302
| 参数名   | 类型             | 必填 | 说明                                                         |
| -------- | ---------------- | ---- | ------------------------------------------------------------ |
| type     | string           | 是   | 订阅的事件类型。<br />- 'connect':连接事件。<br />- 'close':关闭事件。 |
| callback | Callback\<void\> | 是   | 回调函数。                                                   |
C
clevercong 已提交
1303 1304


C
clevercong 已提交
1305
**示例:**
C
clevercong 已提交
1306

Z
zengyawen 已提交
1307
```js
C
clevercong 已提交
1308 1309 1310 1311 1312 1313 1314 1315
let tcp = socket.constructTCPSocketInstance();
tcp.on('connect', () => {
	console.log("on connect success")
});
tcp.on('close', data => {
	console.log("on close success")
});
```
C
clevercong 已提交
1316 1317


C
clevercong 已提交
1318
### off\('connect' | 'close'\)
C
clevercong 已提交
1319

C
clevercong 已提交
1320
off\(type: 'connect' | 'close', callback?: Callback<void\>\): void
C
clevercong 已提交
1321 1322 1323 1324 1325 1326

取消订阅TCPSocket的连接事件或关闭事件。使用callback方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

C
clevercong 已提交
1327
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
1328

C
clevercong 已提交
1329 1330 1331 1332 1333 1334 1335 1336 1337
**参数:**

| 参数名   | 类型             | 必填 | 说明                                                         |
| -------- | ---------------- | ---- | ------------------------------------------------------------ |
| type     | string           | 是   | 订阅的事件类型。<br />- 'connect':连接事件。<br />- 'close':关闭事件。 |
| callback | Callback\<void\> | 否   | 回调函数。                                                   |

**示例:**

Z
zengyawen 已提交
1338
```js
C
clevercong 已提交
1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354
let tcp = socket.constructTCPSocketInstance();
let callback1 = () =>{
	console.log("on connect success");
}
tcp.on('connect', callback1);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
tcp.off('connect', callback1);
tcp.off('connect');
let callback2 = () =>{
	console.log("on close success");
}
tcp.on('close', callback2);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
tcp.off('close', callback2);
tcp.off('close');
```
C
clevercong 已提交
1355 1356


C
clevercong 已提交
1357
### on\('error'\)
C
clevercong 已提交
1358 1359 1360 1361 1362

on\(type: 'error', callback: ErrorCallback\): void

订阅TCPSocket连接的error事件。使用callback方式作为异步方法。

C
clevercong 已提交
1363
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
1364

C
clevercong 已提交
1365
**参数:**
C
clevercong 已提交
1366

C
clevercong 已提交
1367 1368 1369 1370
| 参数名   | 类型          | 必填 | 说明                                 |
| -------- | ------------- | ---- | ------------------------------------ |
| type     | string        | 是   | 订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 是   | 回调函数。                           |
C
clevercong 已提交
1371

C
clevercong 已提交
1372
**示例:**
C
clevercong 已提交
1373

Z
zengyawen 已提交
1374
```js
C
clevercong 已提交
1375 1376 1377 1378 1379
let tcp = socket.constructTCPSocketInstance();
tcp.on('error', err => {
	console.log("on error, err:" + JSON.stringify(err))
});
```
C
clevercong 已提交
1380 1381


C
clevercong 已提交
1382
### off\('error'\)
C
clevercong 已提交
1383 1384 1385 1386 1387 1388 1389 1390

off\(type: 'error', callback?: ErrorCallback\): void

取消订阅TCPSocket连接的error事件。使用callback方式作为异步方法。

>![](public_sys-resources/icon-note.gif) **说明:** 
>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

C
clevercong 已提交
1391
**系统能力**:SystemCapability.Communication.NetStack
C
clevercong 已提交
1392

C
clevercong 已提交
1393 1394 1395 1396 1397 1398 1399 1400 1401
**参数:**

| 参数名   | 类型          | 必填 | 说明                                 |
| -------- | ------------- | ---- | ------------------------------------ |
| type     | string        | 是   | 订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 否   | 回调函数。                           |

**示例:**

Z
zengyawen 已提交
1402
```js
C
clevercong 已提交
1403 1404 1405 1406 1407 1408 1409 1410 1411
let tcp = socket.constructTCPSocketInstance();
let callback = err =>{
	console.log("on error, err:" + JSON.stringify(err));
}
tcp.on('error', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
tcp.off('error', callback);
tcp.off('error');
```
C
clevercong 已提交
1412 1413


C
clevercong 已提交
1414
## TCPConnectOptions
C
clevercong 已提交
1415 1416 1417

TCPSocket连接的参数。

C
clevercong 已提交
1418 1419
**系统能力**:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

C
clevercong 已提交
1420 1421
| 参数名  | 类型                               | 必填 | 说明                       |
| ------- | ---------------------------------- | ---- | -------------------------- |
C
clevercong 已提交
1422
| address | [NetAddress](#netaddress) | 是   | 绑定的地址以及端口。       |
C
clevercong 已提交
1423 1424
| timeout | number                             | 否   | 超时时间,单位毫秒(ms)。 |

C
clevercong 已提交
1425
## TCPSendOptions
C
clevercong 已提交
1426 1427 1428

TCPSocket发送请求的参数。

C
clevercong 已提交
1429 1430
**系统能力**:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

C
clevercong 已提交
1431 1432
| 参数名   | 类型   | 必填 | 说明                                                         |
| -------- | ------ | ---- | ------------------------------------------------------------ |
1433
| data     | string\| ArrayBuffer<sup>8+</sup>  | 是   | 发送的数据。                                                 |
C
clevercong 已提交
1434 1435
| encoding | string | 否   | 字符编码(UTF-8,UTF-16BE,UTF-16LE,UTF-16,US-AECII,ISO-8859-1),默认为UTF-8。 |

C
clevercong 已提交
1436
## TCPExtraOptions
C
clevercong 已提交
1437 1438 1439

TCPSocket连接的其他属性。

C
clevercong 已提交
1440 1441
**系统能力**:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

C
clevercong 已提交
1442 1443 1444 1445 1446 1447 1448 1449 1450 1451
| 参数名            | 类型    | 必填 | 说明                                                         |
| ----------------- | ------- | ---- | ------------------------------------------------------------ |
| keepAlive         | boolean | 否   | 是否保持连接。默认为false。                                  |
| OOBInline         | boolean | 否   | 是否为OOB内联。默认为false。                                 |
| TCPNoDelay        | boolean | 否   | TCPSocket连接是否无时延。默认为false。                       |
| socketLinger      | Object  | 是   | socket是否继续逗留。<br />- on:是否逗留(true:逗留;false:不逗留)。<br />- linger:逗留时长,单位毫秒(ms),取值范围为0~65535。<br />当入参on设置为true时,才需要设置。 |
| receiveBufferSize | number  | 否   | 接收缓冲区大小(单位:Byte)。                               |
| sendBufferSize    | number  | 否   | 发送缓冲区大小(单位:Byte)。                               |
| reuseAddress      | boolean | 否   | 是否重用地址。默认为false。                                  |
| socketTimeout     | number  | 否   | 套接字超时时间,单位毫秒(ms)。                             |