Socket連接
說(shuō)明:
開(kāi)發(fā)前請(qǐng)熟悉鴻蒙開(kāi)發(fā)指導(dǎo)文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
本模塊首批接口從API version 7開(kāi)始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。
導(dǎo)入模塊
import socket from '@ohos.net.socket';
socket.constructUDPSocketInstance
constructUDPSocketInstance(): UDPSocket
創(chuàng)建一個(gè)UDPSocket對(duì)象。
系統(tǒng)能力 :SystemCapability.Communication.NetStack
返回值:
類型 | 說(shuō)明 |
---|---|
[UDPSocket] | 返回一個(gè)UDPSocket對(duì)象。 |
示例:
let udp = socket.constructUDPSocketInstance();
UDPSocket
UDPSocket連接。在調(diào)用UDPSocket的方法前,需要先通過(guò)[socket.constructUDPSocketInstance]創(chuàng)建UDPSocket對(duì)象。
bind
bind(address: NetAddress, callback: AsyncCallback): void
綁定IP地址和端口,端口可以指定或由系統(tǒng)隨機(jī)分配。使用callback方式作為異步方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
address | [NetAddress] | 是 | 目標(biāo)地址信息,參考[NetAddress]。 |
callback | AsyncCallback | 是 | 回調(diào)函數(shù)。 |
示例:
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');
})
bind
bind(address: NetAddress): Promise
綁定IP地址和端口,端口可以指定或由系統(tǒng)隨機(jī)分配。使用Promise方式作為異步方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
address | [NetAddress] | 是 | 目標(biāo)地址信息,參考[NetAddress]。 |
返回值:
類型 | 說(shuō)明 |
---|---|
Promise | 以Promise形式異步返回UDPSocket綁定的結(jié)果。 |
示例:
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');
});
send
send(options: UDPSendOptions, callback: AsyncCallback): void
通過(guò)UDPSocket連接發(fā)送數(shù)據(jù)。使用callback方式作為異步方法。
發(fā)送數(shù)據(jù)前,需要先調(diào)用[UDPSocket.bind()]綁定IP地址和端口。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
options | [UDPSendOptions] | 是 | UDPSocket發(fā)送參數(shù),參考[UDPSendOptions]。 |
callback | AsyncCallback | 是 | 回調(diào)函數(shù)。 |
示例:
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');
})
send
send(options: UDPSendOptions): Promise
通過(guò)UDPSocket連接發(fā)送數(shù)據(jù)。使用Promise方式作為異步方法。
發(fā)送數(shù)據(jù)前,需要先調(diào)用[UDPSocket.bind()]綁定IP地址和端口。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
options | [UDPSendOptions] | 是 | UDPSocket發(fā)送參數(shù),參考[UDPSendOptions]。 |
返回值:
類型 | 說(shuō)明 |
---|---|
Promise | 以Promise形式返回UDPSocket連接發(fā)送數(shù)據(jù)的結(jié)果。 |
示例:
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');
});
close
close(callback: AsyncCallback): void
關(guān)閉UDPSocket連接。使用callback方式作為異步方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
callback | AsyncCallback | 是 | 回調(diào)函數(shù)。 |
示例:
let udp = socket.constructUDPSocketInstance();
udp.close(err = > {
if (err) {
console.log('close fail');
return;
}
console.log('close success');
})
close
close(): Promise
關(guān)閉UDPSocket連接。使用Promise方式作為異步方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
返回值:
類型 | 說(shuō)明 |
---|---|
Promise | 以Promise形式返回關(guān)閉UDPSocket連接的結(jié)果。 |
示例:
let udp = socket.constructUDPSocketInstance();
let promise = udp.close();
promise.then(() = > {
console.log('close success');
}).catch(err = > {
console.log('close fail');
});
getState
getState(callback: AsyncCallback): void
獲取UDPSocket狀態(tài)。使用callback方式作為異步方法。
說(shuō)明: [bind]方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
callback | AsyncCallback<[SocketStateBase]> | 是 | 回調(diào)函數(shù)。 |
示例:
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));
})
})
getState
getState(): Promise
獲取UDPSocket狀態(tài)。使用Promise方式作為異步方法。
說(shuō)明: [bind]方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
返回值:
類型 | 說(shuō)明 |
---|---|
Promise<[SocketStateBase]> | 以Promise形式返回獲取UDPSocket狀態(tài)的結(jié)果。 |
示例:
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');
});
})
setExtraOptions
setExtraOptions(options: UDPExtraOptions, callback: AsyncCallback): void
設(shè)置UDPSocket連接的其他屬性。使用callback方式作為異步方法。
說(shuō)明: [bind]方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
options | [UDPExtraOptions] | 是 | UDPSocket連接的其他屬性,參考[UDPExtraOptions]。 |
callback | AsyncCallback | 是 | 回調(diào)函數(shù)。 |
示例:
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');
})
})
setExtraOptions
setExtraOptions(options: UDPExtraOptions): Promise
設(shè)置UDPSocket連接的其他屬性。使用Promise方式作為異步方法。
說(shuō)明: [bind]方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
options | [UDPExtraOptions] | 是 | UDPSocket連接的其他屬性,參考[UDPExtraOptions]。 |
返回值:
類型 | 說(shuō)明 |
---|---|
Promise | 以Promise形式返回設(shè)置UDPSocket連接的其他屬性的結(jié)果。 |
示例:
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');
});
on('message')
on(type: 'message', callback: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>): void
訂閱UDPSocket連接的接收消息事件。使用callback方式作為異步方法。
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。'message':接收消息事件。 |
callback | Callback<{message: ArrayBuffer, remoteInfo: [SocketRemoteInfo]}> | 是 | 回調(diào)函數(shù)。 |
示例:
let udp = socket.constructUDPSocketInstance();
udp.on('message', value = > {
console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo);
});
off('message')
off(type: 'message', callback?: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>): void
取消訂閱UDPSocket連接的接收消息事件。使用callback方式作為異步方法。
說(shuō)明: 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。'message':接收消息事件。 |
callback | Callback<{message: ArrayBuffer, remoteInfo: [SocketRemoteInfo]}> | 否 | 回調(diào)函數(shù)。 |
示例:
let udp = socket.constructUDPSocketInstance();
let callback = value = >{
console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo);
}
udp.on('message', callback);
// 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
udp.off('message', callback);
udp.off('message');
on('listening' | 'close')
on(type: 'listening' | 'close', callback: Callback): void
訂閱UDPSocket連接的數(shù)據(jù)包消息事件或關(guān)閉事件。使用callback方式作為異步方法。
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。 - 'listening':數(shù)據(jù)包消息事件。 - 'close':關(guān)閉事件。 |
callback | Callback | 是 | 回調(diào)函數(shù)。 |
示例:
let udp = socket.constructUDPSocketInstance();
udp.on('listening', () = > {
console.log("on listening success");
});
udp.on('close', () = > {
console.log("on close success" );
});
off('listening' | 'close')
off(type: 'listening' | 'close', callback?: Callback): void
取消訂閱UDPSocket連接的數(shù)據(jù)包消息事件或關(guān)閉事件。使用callback方式作為異步方法。
說(shuō)明: 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
type | string | 是 | 訂閱事件類型。 - 'listening':數(shù)據(jù)包消息事件。 - 'close':關(guān)閉事件。 |
callback | Callback | 否 | 回調(diào)函數(shù)。 |
示例:
let udp = socket.constructUDPSocketInstance();
let callback1 = () = >{
console.log("on listening, success");
}
udp.on('listening', callback1);
// 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
udp.off('listening', callback1);
udp.off('listening');
let callback2 = () = >{
console.log("on close, success");
}
udp.on('close', callback2);
// 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
udp.off('close', callback2);
udp.off('close');
on('error')
on(type: 'error', callback: ErrorCallback): void
訂閱UDPSocket連接的error事件。使用callback方式作為異步方法。
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。'error':error事件。 |
callback | ErrorCallback | 是 | 回調(diào)函數(shù)。 |
示例:
let udp = socket.constructUDPSocketInstance();
udp.on('error', err = > {
console.log("on error, err:" + JSON.stringify(err))
});
off('error')
off(type: 'error', callback?: ErrorCallback): void
取消訂閱UDPSocket連接的error事件。使用callback方式作為異步方法。
說(shuō)明: 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。'error':error事件。 |
callback | ErrorCallback | 否 | 回調(diào)函數(shù)。 |
示例:
let udp = socket.constructUDPSocketInstance();
let callback = err = >{
console.log("on error, err:" + JSON.stringify(err));
}
udp.on('error', callback);
// 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
udp.off('error', callback);
udp.off('error');
NetAddress
目標(biāo)地址信息。
系統(tǒng)能力 :以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
address | string | 是 | 本地綁定的ip地址。 |
port | number | 否 | 端口號(hào) ,范圍0~65535。如果不指定系統(tǒng)隨機(jī)分配端口。 |
family | number | 否 | 網(wǎng)絡(luò)協(xié)議類型,可選類型: - 1:IPv4 - 2:IPv6 默認(rèn)為1。 |
UDPSendOptions
UDPSocket發(fā)送參數(shù)。
系統(tǒng)能力 :以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
data | string | ArrayBuffer8+ | 是 |
address | [NetAddress] | 是 | 目標(biāo)地址信息。 |
UDPExtraOptions
UDPSocket連接的其他屬性。
系統(tǒng)能力 :以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
oadcast | boolean | 否 | 是否可以發(fā)送廣播。默認(rèn)為false。 |
receiveBufferSize | number | 否 | 接收緩沖區(qū)大小(單位:Byte)。 |
sendBufferSize | number | 否 | 發(fā)送緩沖區(qū)大小(單位:Byte)。 |
reuseAddress | boolean | 否 | 是否重用地址。默認(rèn)為false。 |
socketTimeout | number | 否 | 套接字超時(shí)時(shí)間,單位毫秒(ms)。 |
SocketStateBase
Socket的狀態(tài)信息。
系統(tǒng)能力 :以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
isBound | boolean | 是 | 是否綁定。 |
isClose | boolean | 是 | 是否關(guān)閉。 |
isConnected | boolean | 是 | 是否連接。 |
SocketRemoteInfo
Socket的連接信息。
系統(tǒng)能力 :以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
address | string | 是 | 本地綁定的ip地址。 |
family | string | 是 | 網(wǎng)絡(luò)協(xié)議類型,可選類型: - IPv4 - IPv6 默認(rèn)為IPv4。 |
port | number | 是 | 端口號(hào),范圍0~65535。 |
size | number | 是 | 服務(wù)器響應(yīng)信息的字節(jié)長(zhǎng)度。 |
socket.constructTCPSocketInstance
constructTCPSocketInstance(): TCPSocket
創(chuàng)建一個(gè)TCPSocket對(duì)象。
系統(tǒng)能力 :SystemCapability.Communication.NetStack
返回值:
類型 | 說(shuō)明 |
---|---|
[TCPSocket | 返回一個(gè)TCPSocket對(duì)象。 |
示例:
let tcp = socket.constructTCPSocketInstance();
TCPSocket
TCPSocket連接。在調(diào)用TCPSocket的方法前,需要先通過(guò)[socket.constructTCPSocketInstance]創(chuàng)建TCPSocket對(duì)象。
bind
bind(address: NetAddress, callback: AsyncCallback): void
綁定IP地址和端口,端口可以指定或由系統(tǒng)隨機(jī)分配。使用callback方法作為異步方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
address | [NetAddress] | 是 | 目標(biāo)地址信息,參考[NetAddress]。 |
callback | AsyncCallback | 是 | 回調(diào)函數(shù)。 |
示例:
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');
})
bind
bind(address: NetAddress): Promise
綁定IP地址和端口,端口可以指定或由系統(tǒng)隨機(jī)分配。使用Promise方法作為異步方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
address | [NetAddress] | 是 | 目標(biāo)地址信息,參考[NetAddress]。 |
返回值:
類型 | 說(shuō)明 |
---|---|
Promise | 以Promise形式返回TCPSocket綁定本機(jī)的IP地址和端口的結(jié)果。 |
示例:
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');
});
connect
connect(options: TCPConnectOptions, callback: AsyncCallback): void
連接到指定的IP地址和端口。使用callback方法作為異步方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
options | [TCPConnectOptions] | 是 | TCPSocket連接的參數(shù),參考[TCPConnectOptions]。 |
callback | AsyncCallback | 是 | 回調(diào)函數(shù)。 |
示例:
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');
})
connect
connect(options: TCPConnectOptions): Promise
連接到指定的IP地址和端口。使用promise方法作為異步方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
options | [TCPConnectOptions | 是 | TCPSocket連接的參數(shù),參考[TCPConnectOptions]。 |
返回值:
類型 | 說(shuō)明 |
---|---|
Promise | 以Promise形式返回TCPSocket連接到指定的IP地址和端口的結(jié)果。 |
示例:
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');
});
send
send(options: TCPSendOptions, callback: AsyncCallback): void
通過(guò)TCPSocket連接發(fā)送數(shù)據(jù)。使用callback方式作為異步方法。
說(shuō)明: [connect]方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
options | [TCPSendOptions] | 是 | TCPSocket發(fā)送請(qǐng)求的參數(shù),參考[TCPSendOptions]。 |
callback | AsyncCallback | 是 | 回調(diào)函數(shù)。 |
示例:
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');
});
send
send(options: TCPSendOptions): Promise
通過(guò)TCPSocket連接發(fā)送數(shù)據(jù)。使用Promise方式作為異步方法。
說(shuō)明: [connect]方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
options | [TCPSendOptions] | 是 | TCPSocket發(fā)送請(qǐng)求的參數(shù),參考[TCPSendOptions]。 |
返回值:
類型 | 說(shuō)明 |
---|---|
Promise | 以Promise形式返回通過(guò)TCPSocket連接發(fā)送數(shù)據(jù)的結(jié)果。 |
示例:
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');
});
close
close(callback: AsyncCallback): void
關(guān)閉TCPSocket連接。使用callback方式作為異步方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
callback | AsyncCallback | 是 | 回調(diào)函數(shù)。 |
示例:
let tcp = socket.constructTCPSocketInstance();
tcp.close(err = > {
if (err) {
console.log('close fail');
return;
}
console.log('close success');
})
close
close(): Promise
關(guān)閉TCPSocket連接。使用Promise方式作為異步方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
返回值:
類型 | 說(shuō)明 |
---|---|
Promise | 以Promise形式返回關(guān)閉TCPSocket連接的結(jié)果。 |
示例:
let tcp = socket.constructTCPSocketInstance();
let promise = tcp.close();
promise.then(() = > {
console.log('close success');
}).catch(err = > {
console.log('close fail');
});
getRemoteAddress
getRemoteAddress(callback: AsyncCallback): void
獲取對(duì)端Socket地址。使用callback方式作為異步方法。
說(shuō)明: [connect]方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
callback | AsyncCallback<[NetAddress](> | 是 | 回調(diào)函數(shù)。 |
示例:
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');
});
getRemoteAddress
getRemoteAddress(): Promise
獲取對(duì)端Socket地址。使用Promise方式作為異步方法。
說(shuō)明: [connect]方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
返回值:
類型 | 說(shuō)明 |
---|---|
Promise<[NetAddress]> | 以Promise形式返回獲取對(duì)端socket地址的結(jié)果。 |
示例:
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');
});
getState
getState(callback: AsyncCallback): void
獲取TCPSocket狀態(tài)。使用callback方式作為異步方法。
說(shuō)明: [bind]或[connect]方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
callback | AsyncCallback<[SocketStateBase]> | 是 | 回調(diào)函數(shù)。 |
示例:
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');
});
getState
getState(): Promise
獲取TCPSocket狀態(tài)。使用Promise方式作為異步方法。
說(shuō)明: [bind]或[connect]方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
返回值:
類型 | 說(shuō)明 |
---|---|
Promise<[SocketStateBase]> | 以Promise形式返回獲取TCPSocket狀態(tài)的結(jié)果。 |
示例:
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');
});
setExtraOptions
setExtraOptions(options: TCPExtraOptions, callback: AsyncCallback): void
設(shè)置TCPSocket連接的其他屬性。使用callback方式作為異步方法。
說(shuō)明: [bind]或[connect]方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
options | [TCPExtraOptions] | 是 | TCPSocket連接的其他屬性,參考[TCPExtraOptions]。 |
callback | AsyncCallback | 是 | 回調(diào)函數(shù)。 |
示例:
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,
socketLinger: { on:true, linger:10 },
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');
});
setExtraOptions
setExtraOptions(options: TCPExtraOptions): Promise
設(shè)置TCPSocket連接的其他屬性,使用Promise方式作為異步方法。
說(shuō)明: [bind]或[connect]方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限 :ohos.permission.INTERNET
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
options | [TCPExtraOptions] | 是 | TCPSocket連接的其他屬性,參考[TCPExtraOptions]。 |
返回值:
類型 | 說(shuō)明 |
---|---|
Promise | 以Promise形式返回設(shè)置TCPSocket連接的其他屬性的結(jié)果。 |
示例:
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,
socketLinger: { on:true, linger:10 },
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');
});
on('message')
on(type: 'message', callback: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>): void
訂閱TCPSocket連接的接收消息事件。使用callback方式作為異步方法。
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。'message':接收消息事件。 |
callback | Callback<{message: ArrayBuffer, remoteInfo: [SocketRemoteInfo]}> | 是 | 回調(diào)函數(shù)。 |
示例:
let tcp = socket.constructTCPSocketInstance();
tcp.on('message', value = > {
console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo)
});
off('message')
off(type: 'message', callback?: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>): void
取消訂閱TCPSocket連接的接收消息事件。使用callback方式作為異步方法。
說(shuō)明: 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。'message':接收消息事件。 |
callback | Callback<{message: ArrayBuffer, remoteInfo: [SocketRemoteInfo]}> | 否 | 回調(diào)函數(shù)。 |
示例:
let tcp = socket.constructTCPSocketInstance();
let callback = value = >{
console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo);
}
tcp.on('message', callback);
// 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
tcp.off('message', callback);
tcp.off('message');
on('connect' | 'close')
on(type: 'connect' | 'close', callback: Callback): void
訂閱TCPSocket的連接事件或關(guān)閉事件。使用callback方式作為異步方法。
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。 - 'connect':連接事件。 - 'close':關(guān)閉事件。 |
callback | Callback | 是 | 回調(diào)函數(shù)。 |
示例:
let tcp = socket.constructTCPSocketInstance();
tcp.on('connect', () = > {
console.log("on connect success")
});
tcp.on('close', data = > {
console.log("on close success")
});
off('connect' | 'close')
off(type: 'connect' | 'close', callback?: Callback): void
取消訂閱TCPSocket的連接事件或關(guān)閉事件。使用callback方式作為異步方法。
說(shuō)明: 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。 - 'connect':連接事件。 - 'close':關(guān)閉事件。 |
callback | Callback | 否 | 回調(diào)函數(shù)。 |
示例:
let tcp = socket.constructTCPSocketInstance();
let callback1 = () = >{
console.log("on connect success");
}
tcp.on('connect', callback1);
// 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
tcp.off('connect', callback1);
tcp.off('connect');
let callback2 = () = >{
console.log("on close success");
}
tcp.on('close', callback2);
// 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
tcp.off('close', callback2);
tcp.off('close');
on('error')
on(type: 'error', callback: ErrorCallback): void
訂閱TCPSocket連接的error事件。使用callback方式作為異步方法。
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。'error':error事件。 |
callback | ErrorCallback | 是 | 回調(diào)函數(shù)。 |
示例:
let tcp = socket.constructTCPSocketInstance();
tcp.on('error', err = > {
console.log("on error, err:" + JSON.stringify(err))
});
off('error')
off(type: 'error', callback?: ErrorCallback): void
取消訂閱TCPSocket連接的error事件。使用callback方式作為異步方法。
說(shuō)明: 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。'error':error事件。 |
callback | ErrorCallback | 否 | 回調(diào)函數(shù)。 |
示例:
let tcp = socket.constructTCPSocketInstance();
let callback = err = >{
console.log("on error, err:" + JSON.stringify(err));
}
tcp.on('error', callback);
// 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
tcp.off('error', callback);
tcp.off('error');
TCPConnectOptions
TCPSocket連接的參數(shù)。
系統(tǒng)能力 :以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
address | [NetAddress] | 是 | 綁定的地址以及端口。 |
timeout | number | 否 | 超時(shí)時(shí)間,單位毫秒(ms)。 |
TCPSendOptions
TCPSocket發(fā)送請(qǐng)求的參數(shù)。
系統(tǒng)能力 :以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
data | string | ArrayBuffer8+ | 是 |
encoding | string | 否 | 字符編碼(UTF-8,UTF-16BE,UTF-16LE,UTF-16,US-AECII,ISO-8859-1),默認(rèn)為UTF-8。HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿 |
TCPExtraOptions
TCPSocket連接的其他屬性。
系統(tǒng)能力 :以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
參數(shù)名 | 類型 | 必填 | 說(shuō)明 |
---|---|---|---|
keepAlive | boolean | 否 | 是否保持連接。默認(rèn)為false。 |
OOBInline | boolean | 否 | 是否為OOB內(nèi)聯(lián)。默認(rèn)為false。 |
TCPNoDelay | boolean | 否 | TCPSocket連接是否無(wú)時(shí)延。默認(rèn)為false。 |
socketLinger | Object | 是 | socket是否繼續(xù)逗留。 - on:是否逗留(true:逗留;false:不逗留)。 - linger:逗留時(shí)長(zhǎng),單位毫秒(ms),取值范圍為0~65535。 當(dāng)入?yún)n設(shè)置為true時(shí),才需要設(shè)置。 |
receiveBufferSize | number | 否 | 接收緩沖區(qū)大小(單位:Byte)。 |
sendBufferSize | number | 否 | 發(fā)送緩沖區(qū)大小(單位:Byte)。 |
reuseAddress | boolean | 否 | 是否重用地址。默認(rèn)為false。 |
socketTimeout | number | 否 | 套接字超時(shí)時(shí)間,單位毫秒(ms)。 |
審核編輯 黃宇
-
網(wǎng)絡(luò)管理
+關(guān)注
關(guān)注
0文章
118瀏覽量
27656 -
Socket
+關(guān)注
關(guān)注
0文章
211瀏覽量
34637 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2313瀏覽量
42748
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論