tcp修改
This commit is contained in:
parent
33a719a462
commit
3bbf35a1db
@ -1,74 +1,76 @@
|
|||||||
import TcpClient from './TcpClient';
|
import TcpClient from './TcpClient';
|
||||||
import { getSyncData} from '../service/initable'
|
import { getSyncData } from '../service/initable';
|
||||||
import hilog from '@ohos.hilog';
|
import hilog from '@ohos.hilog';
|
||||||
|
|
||||||
export async function getTCP() {
|
export async function getTCP() {
|
||||||
|
|
||||||
getSyncData('IpConfigTable').then(async (result:Array<any>)=>{
|
getSyncData('IpConfigTable').then(async (result: Array<any>) => {
|
||||||
console.log('result222',JSON.stringify(result))
|
console.log('result222', JSON.stringify(result))
|
||||||
if(result.length){
|
if (result.length) {
|
||||||
if(globalThis.TcpClient&&globalThis.getCloseTcp){
|
if (globalThis.TcpClient && globalThis.TcpClient.closeTcp) {
|
||||||
globalThis.TcpClient.closeTcp(async ()=>{
|
globalThis.TcpClient.closeTcp(async () => {
|
||||||
// const tcpClient: TcpClient =new TcpClient(result[0].tcplocalIp, result[0].tcplocalIpPort,result[0].tcpOppositeIp,result[0].tcpOppositePort)
|
// const tcpClient: TcpClient =new TcpClient(result[0].tcplocalIp, result[0].tcplocalIpPort,result[0].tcpOppositeIp,result[0].tcpOppositePort)
|
||||||
// globalThis.TcpClient = tcpClient
|
// globalThis.TcpClient = tcpClient
|
||||||
setTimeout(async ()=>{
|
setTimeout(async () => {
|
||||||
await globalThis.TcpClient.rebindTcp(result[0].tcplocalIp, result[0].tcplocalIpPort,result[0].tcpOppositeIp,result[0].tcpOppositePort)
|
await globalThis.TcpClient.rebindTcp(result[0].tcplocalIp, result[0].tcplocalIpPort, result[0].tcpOppositeIp, result[0].tcpOppositePort)
|
||||||
await globalThis.TcpClient.connectTcp()
|
await globalThis.TcpClient.connectTcp()
|
||||||
await globalThis.TcpClient.sendMsg('1002')//1002
|
await globalThis.TcpClient.sendMsg('1002') //1002
|
||||||
globalThis.TcpClient.onError((val)=>{
|
globalThis.TcpClient.onError((val) => {
|
||||||
setTimeout(()=>{
|
setTimeout(() => {
|
||||||
globalThis.TcpClient.sendMsg('1002')//1002
|
globalThis.TcpClient.sendMsg('1002') //1002
|
||||||
if(val){
|
if (val) {
|
||||||
// const msg=val.substring(5,val.length-1)
|
// const msg=val.substring(5,val.length-1)
|
||||||
console.log('socketTag[PLC.UdpClient] status:',globalThis.udpClient.getStatus())
|
console.log('socketTag[PLC.UdpClient] status:', globalThis.udpClient.getStatus())
|
||||||
globalThis.udpClient?.sendMsg(val)
|
globalThis.udpClient?.sendMsg(val)
|
||||||
}
|
}
|
||||||
},1000)
|
}, 1000)
|
||||||
})
|
})
|
||||||
await globalThis.TcpClient.onMessage((val)=>{
|
await globalThis.TcpClient.onMessage((val) => {
|
||||||
setTimeout(()=>{
|
setTimeout(() => {
|
||||||
globalThis.TcpClient.sendMsg('1002')//1002
|
globalThis.TcpClient.sendMsg('1002') //1002
|
||||||
if(val){
|
if (val) {
|
||||||
// const msg=val.substring(5,val.length-1)
|
// const msg=val.substring(5,val.length-1)
|
||||||
console.log('socketTag[PLC.UdpClient] status:',globalThis.udpClient.getStatus())
|
console.log('socketTag[PLC.UdpClient] status:', globalThis.udpClient.getStatus())
|
||||||
globalThis.udpClient?.sendMsg(val)
|
globalThis.udpClient?.sendMsg(val)
|
||||||
}
|
}
|
||||||
},1000)
|
}, 1000)
|
||||||
|
|
||||||
})
|
})
|
||||||
},2000)
|
}, 2000)
|
||||||
})
|
})
|
||||||
|
|
||||||
}else{
|
} else {
|
||||||
const tcpClient: TcpClient =new TcpClient(result[0].tcplocalIp, result[0].tcplocalIpPort,result[0].tcpOppositeIp,result[0].tcpOppositePort)
|
const tcpClient: TcpClient = new TcpClient(result[0].tcplocalIp, result[0].tcplocalIpPort, result[0].tcpOppositeIp, result[0].tcpOppositePort)
|
||||||
globalThis.TcpClient = tcpClient
|
globalThis.TcpClient = tcpClient
|
||||||
await globalThis.TcpClient.bindTcp()
|
await globalThis.TcpClient.bindTcp()
|
||||||
await globalThis.TcpClient.connectTcp()
|
await globalThis.TcpClient.connectTcp()
|
||||||
await globalThis.TcpClient.sendMsg('1002')//1002
|
await globalThis.TcpClient.sendMsg('1002') //1002
|
||||||
globalThis.TcpClient.onError((val)=>{
|
globalThis.TcpClient.onError((val) => {
|
||||||
hilog.info(0x0000, 'testTag', "valvalval2" + JSON.stringify(val));
|
hilog.info(0x0000, 'testTag', "valvalval2" + JSON.stringify(val));
|
||||||
setTimeout(()=>{
|
setTimeout(() => {
|
||||||
globalThis.TcpClient.sendMsg('1002')//1002
|
globalThis.TcpClient.sendMsg('1002') //1002
|
||||||
if(val&& globalThis.udpClient?.sendMsg){
|
if (val && globalThis.udpClient?.sendMsg) {
|
||||||
globalThis.udpClient?.sendMsg(val)
|
globalThis.udpClient?.sendMsg(val)
|
||||||
}
|
}
|
||||||
},1000)
|
}, 1000)
|
||||||
})
|
})
|
||||||
await globalThis.TcpClient.onMessage((val)=>{
|
await globalThis.TcpClient.onMessage((val) => {
|
||||||
hilog.info(0x0000, 'testTag', "valvalval2" + JSON.stringify(val));
|
hilog.info(0x0000, 'testTag', "valvalval2" + JSON.stringify(val));
|
||||||
setTimeout(()=>{
|
setTimeout(() => {
|
||||||
globalThis.TcpClient.sendMsg('1002')//1002
|
globalThis.TcpClient.sendMsg('1002') //1002
|
||||||
if(val&& globalThis.udpClient?.sendMsg){
|
if (val && globalThis.udpClient?.sendMsg) {
|
||||||
globalThis.udpClient?.sendMsg(val)
|
globalThis.udpClient?.sendMsg(val)
|
||||||
}
|
}
|
||||||
},1000)
|
}, 1000)
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// globalThis.udpClient = new UdpClient(result[0].localIp, result[0].localIpPort,result[0].oppositeIp,result[0].oppositeIpPort)
|
// globalThis.udpClient = new UdpClient(result[0].localIp, result[0].localIpPort,result[0].oppositeIp,result[0].oppositeIpPort)
|
||||||
|
|
||||||
}else{
|
} else {
|
||||||
globalThis.TcpClient={}
|
globalThis.TcpClient = {}
|
||||||
globalThis.TcpClient.onMessage=()=>{}
|
globalThis.TcpClient.onMessage = () => {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,176 +1,189 @@
|
|||||||
import socket from '@ohos.net.socket';
|
import socket from '@ohos.net.socket';
|
||||||
import buffer from '@ohos.buffer';
|
|
||||||
|
|
||||||
const TAG = 'socketTag[TcpDemo.TcpClient]'
|
|
||||||
import prompt from '@ohos.prompt'
|
|
||||||
import hilog from '@ohos.hilog';
|
import hilog from '@ohos.hilog';
|
||||||
|
|
||||||
|
const TAG = 'socketTag[TcpDemo.TcpClient]'
|
||||||
|
|
||||||
export default class TcpClient {
|
export default class TcpClient {
|
||||||
private localIp: string = ''
|
private localIp: string = ''
|
||||||
private localIpPort: string = ''
|
private localIpPort: string = ''
|
||||||
private oppositeIp: string = ''
|
private oppositeIp: string = ''
|
||||||
private oppositeIpPort: string = ''
|
private oppositeIpPort: string = ''
|
||||||
|
|
||||||
private tcp: any = null
|
private tcp: any = null
|
||||||
|
|
||||||
constructor(tcplocalIp: string, tcplocalIpPort:string,tcpOppositeIp: string,tcpOppositePort:string) {
|
constructor(tcplocalIp: string, tcplocalIpPort: string, tcpOppositeIp: string, tcpOppositePort: string) {
|
||||||
this.localIp = tcplocalIp
|
this.localIp = tcplocalIp
|
||||||
this.oppositeIp = tcpOppositeIp
|
this.oppositeIp = tcpOppositeIp
|
||||||
this.localIpPort = tcplocalIpPort
|
this.localIpPort = tcplocalIpPort
|
||||||
this.oppositeIpPort = tcpOppositePort
|
this.oppositeIpPort = tcpOppositePort
|
||||||
console.log(TAG,'new Tcp',this.localIp,this.localIpPort,this.oppositeIp,this.oppositeIpPort)
|
console.log(TAG, 'new Tcp', this.localIp, this.localIpPort, this.oppositeIp, this.oppositeIpPort)
|
||||||
this.tcp = socket.constructTCPSocketInstance();
|
this.tcp = socket.constructTCPSocketInstance();
|
||||||
}
|
}
|
||||||
onError(callback?){
|
|
||||||
this.tcp.on('error', err => {
|
onError(callback?) {
|
||||||
console.log(TAG,'tcpOnerror', JSON.stringify(err))
|
this.tcp.on('error', err => {
|
||||||
setTimeout(async ()=>{
|
console.log(TAG, 'tcpOnerror', JSON.stringify(err))
|
||||||
await this.bindTcp()
|
setTimeout(async () => {
|
||||||
await this.connectTcp()
|
await this.bindTcp()
|
||||||
this.onMessage(callback)
|
await this.connectTcp()
|
||||||
},2000)
|
this.onMessage(callback)
|
||||||
// this.closeUdp(()=>{
|
}, 2000)
|
||||||
// this.bindUdp()
|
// this.closeUdp(()=>{
|
||||||
// })
|
// this.bindUdp()
|
||||||
|
// })
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
rebindTcp(localIp: string, localIpPort: string, oppositeIp: string, oppositeIpPort: string) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
this.localIp = localIp
|
||||||
|
this.oppositeIp = oppositeIp
|
||||||
|
this.localIpPort = localIpPort
|
||||||
|
this.oppositeIpPort = oppositeIpPort
|
||||||
|
console.log(TAG, 'tcpreBind', this.localIp, this.localIpPort)
|
||||||
|
let promise = this.tcp.bind({
|
||||||
|
address: this.localIp, port: parseInt(this.localIpPort), family: 1
|
||||||
|
}, err => {
|
||||||
|
if (err) {
|
||||||
|
globalThis.getCloseTcp = true
|
||||||
|
hilog.info(0x0000, 'testTag', "tcpreBinderror:" + JSON.stringify(err));
|
||||||
|
resolve(true)
|
||||||
|
}
|
||||||
|
console.log('testTag,rebindtestTag tcp bind success');
|
||||||
|
globalThis.getCloseTcp = false
|
||||||
|
resolve(false)
|
||||||
|
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
// let promise = this.udp.bind({
|
||||||
|
// // address: '192.168.7.170', port: 20122, family: 1
|
||||||
|
// // address: '192.168.7.170', port: 31013, family: 1
|
||||||
|
// address: this.localIp, port: parseInt(this.localIpPort), family: 1
|
||||||
|
// });
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bindTcp() {
|
||||||
|
console.log(TAG, 'tcpbind', this.localIp, 'localIp', this.localIpPort)
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
let promise = this.tcp.bind({
|
||||||
|
address: this.localIp, port: parseInt(this.localIpPort), family: 1
|
||||||
|
}, err => {
|
||||||
|
if (err) {
|
||||||
|
console.log('testTag tcp bind faile');
|
||||||
|
globalThis.getCloseTcp = true
|
||||||
|
hilog.info(0x0000, 'testTag', "tcpBinderror:" + JSON.stringify(err));
|
||||||
|
resolve(true)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
globalThis.getCloseTcp = false
|
||||||
|
console.log('testTag tcp bind success');
|
||||||
|
resolve(false)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
console.log('localIp', this.localIp)
|
||||||
|
console.log('localIpPort', this.localIpPort)
|
||||||
|
// let promise = this.udp.bind({
|
||||||
|
// // address: '192.168.7.170', port: 20122, family: 1
|
||||||
|
// // address: '192.168.7.170', port: 31013, family: 1
|
||||||
|
// address: this.localIp, port: parseInt(this.localIpPort), family: 1
|
||||||
|
// });
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
connectTcp() {
|
||||||
|
console.log(TAG, 'tcpConnect', this.oppositeIp, 'localIp', this.oppositeIpPort)
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
let promise = this.tcp.connect({
|
||||||
|
address: {
|
||||||
|
address: this.oppositeIp, port: parseInt(this.oppositeIpPort), family: 1
|
||||||
|
}, timeout: 6000
|
||||||
|
});
|
||||||
|
promise.then(() => {
|
||||||
|
|
||||||
|
this.tcp.setExtraOptions({
|
||||||
|
keepAlive: true,
|
||||||
|
// OOBInline: true,
|
||||||
|
// TCPNoDelay: true,
|
||||||
|
// socketLinger: { on:true, linger:10 },
|
||||||
|
// receiveBufferSize: 1000,
|
||||||
|
// sendBufferSize: 1000,
|
||||||
|
// reuseAddress: true,
|
||||||
|
// socketTimeout: 3000,
|
||||||
|
}, err => {
|
||||||
|
if (err) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
globalThis.getCloseTcp = false
|
||||||
rebindTcp(localIp: string, localIpPort:string,oppositeIp: string,oppositeIpPort:string){
|
resolve(true)
|
||||||
return new Promise((resolve, reject)=>{
|
}).catch(err => {
|
||||||
this.localIp = localIp
|
globalThis.getCloseTcp = true
|
||||||
this.oppositeIp = oppositeIp
|
setTimeout(() => {
|
||||||
this.localIpPort = localIpPort
|
this.connectTcp()
|
||||||
this.oppositeIpPort = oppositeIpPort
|
resolve(false)
|
||||||
console.log(TAG,'tcpreBind', this.localIp,this.localIpPort)
|
}, 2000)
|
||||||
let promise=this.tcp.bind({ address: this.localIp, port:parseInt(this.localIpPort), family: 1 }, err => {
|
console.log('testTagconnect,error')
|
||||||
if (err) {
|
|
||||||
globalThis.getCloseTcp=true
|
|
||||||
hilog.info(0x0000, 'testTag', "tcpreBinderror:" + JSON.stringify(err));
|
|
||||||
resolve(true)
|
|
||||||
}
|
|
||||||
console.log('testTag,rebindtestTag tcp bind success');
|
|
||||||
globalThis.getCloseTcp=false
|
|
||||||
resolve(false)
|
|
||||||
|
|
||||||
})
|
});
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// let promise = this.udp.bind({
|
sendMsg(msg: string) {
|
||||||
// // address: '192.168.7.170', port: 20122, family: 1
|
console.log(TAG, 'tcpSend', msg.length, msg)
|
||||||
// // address: '192.168.7.170', port: 31013, family: 1
|
return new Promise((reslove, reject) => {
|
||||||
// address: this.localIp, port: parseInt(this.localIpPort), family: 1
|
let promise = this.tcp.send({
|
||||||
// });
|
data: msg
|
||||||
|
});
|
||||||
|
promise.then(() => {
|
||||||
|
reslove(true)
|
||||||
|
}).catch(err => {
|
||||||
|
reslove(false)
|
||||||
|
});
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
}
|
onMessage(callback?) {
|
||||||
bindTcp() {
|
this.tcp.on('message', value => {
|
||||||
console.log(TAG,'tcpbind',this.localIp,'localIp',this.localIpPort)
|
console.log(TAG, 'Tcponmessage', value.length, value)
|
||||||
return new Promise((resolve,reject)=>{
|
|
||||||
let promise=this.tcp.bind({ address: this.localIp, port:parseInt(this.localIpPort), family: 1 }, err => {
|
|
||||||
if (err) {
|
|
||||||
console.log('testTag tcp bind faile');
|
|
||||||
globalThis.getCloseTcp=true
|
|
||||||
hilog.info(0x0000, 'testTag', "tcpBinderror:" + JSON.stringify(err));
|
|
||||||
resolve(true)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
globalThis.getCloseTcp=false
|
|
||||||
console.log('testTag tcp bind success');
|
|
||||||
resolve(false)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
console.log('localIp',this.localIp)
|
|
||||||
console.log('localIpPort',this.localIpPort)
|
|
||||||
// let promise = this.udp.bind({
|
|
||||||
// // address: '192.168.7.170', port: 20122, family: 1
|
|
||||||
// // address: '192.168.7.170', port: 31013, family: 1
|
|
||||||
// address: this.localIp, port: parseInt(this.localIpPort), family: 1
|
|
||||||
// });
|
|
||||||
|
|
||||||
|
// console.log('messageLengt',,value.message.length))
|
||||||
|
console.log('testTagtcpmsg')
|
||||||
|
// console.log("on message, message:" + value.message+ ", remoteInfo:" )
|
||||||
|
if (value) {
|
||||||
|
let dataView = new DataView(value.message)
|
||||||
|
// const Arraybuffer=buffer.from(value.message, 5, dataView?.byteLength);
|
||||||
|
const Arraybuffer = value.message.slice(5, dataView?.byteLength);
|
||||||
|
|
||||||
}
|
callback && callback(Arraybuffer)
|
||||||
connectTcp(){
|
} else {
|
||||||
console.log(TAG,'tcpConnect',this.oppositeIp,'localIp',this.oppositeIpPort)
|
callback && callback('')
|
||||||
return new Promise((resolve,reject)=>{
|
}
|
||||||
let promise = this.tcp.connect({ address: {address: this.oppositeIp, port: parseInt(this.oppositeIpPort), family: 1} , timeout: 6000});
|
// callback(value.message)
|
||||||
promise.then(() => {
|
});
|
||||||
|
}
|
||||||
|
|
||||||
this.tcp.setExtraOptions({
|
offTcp(callback) {
|
||||||
keepAlive: true,
|
console.log(TAG, 'tcpofff')
|
||||||
// OOBInline: true,
|
|
||||||
// TCPNoDelay: true,
|
|
||||||
// socketLinger: { on:true, linger:10 },
|
|
||||||
// receiveBufferSize: 1000,
|
|
||||||
// sendBufferSize: 1000,
|
|
||||||
// reuseAddress: true,
|
|
||||||
// socketTimeout: 3000,
|
|
||||||
},err => {
|
|
||||||
if (err) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
globalThis.getCloseTcp=false
|
|
||||||
resolve(true)
|
|
||||||
}).catch(err => {
|
|
||||||
globalThis.getCloseTcp=true
|
|
||||||
setTimeout(()=>{
|
|
||||||
this.connectTcp()
|
|
||||||
},2000)
|
|
||||||
console.log('testTagconnect,error')
|
|
||||||
|
|
||||||
});
|
this.tcp.off('testTagofmessg', callback);
|
||||||
})
|
}
|
||||||
}
|
|
||||||
|
|
||||||
sendMsg(msg: string) {
|
closeTcp(callback) {
|
||||||
console.log(TAG,'tcpSend',msg.length,msg)
|
return new Promise((reslove, reject) => {
|
||||||
return new Promise((reslove,reject)=>{
|
console.log(TAG, 'tcpClose')
|
||||||
let promise = this.tcp.send({
|
let promise = this.tcp.close();
|
||||||
data:msg
|
promise.then(() => {
|
||||||
});
|
globalThis.getCloseTcp = true
|
||||||
promise.then(() => {
|
console.log(TAG, 'tcpCloseSuccess')
|
||||||
reslove(true)
|
callback()
|
||||||
}).catch(err => {
|
reslove(true)
|
||||||
reslove(false)
|
}).catch(err => {
|
||||||
});
|
console.log(TAG, 'tcpClosefailed')
|
||||||
})
|
reslove(false)
|
||||||
}
|
});
|
||||||
|
})
|
||||||
onMessage(callback?) {
|
}
|
||||||
this.tcp.on('message', value => {
|
|
||||||
console.log(TAG,'Tcponmessage',value.length,value)
|
|
||||||
|
|
||||||
// console.log('messageLengt',,value.message.length))
|
|
||||||
console.log('testTagtcpmsg')
|
|
||||||
// console.log("on message, message:" + value.message+ ", remoteInfo:" )
|
|
||||||
if (value) {
|
|
||||||
let dataView = new DataView(value.message)
|
|
||||||
// const Arraybuffer=buffer.from(value.message, 5, dataView?.byteLength);
|
|
||||||
const Arraybuffer=value.message.slice(5, dataView?.byteLength);
|
|
||||||
|
|
||||||
callback&&callback(Arraybuffer)
|
|
||||||
}else{
|
|
||||||
callback&&callback('')
|
|
||||||
}
|
|
||||||
// callback(value.message)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
offTcp(callback) {
|
|
||||||
console.log(TAG,'tcpofff')
|
|
||||||
|
|
||||||
this.tcp.off('testTagofmessg', callback);
|
|
||||||
}
|
|
||||||
closeTcp(callback) {
|
|
||||||
return new Promise((reslove,reject)=>{
|
|
||||||
console.log(TAG,'tcpClose')
|
|
||||||
let promise = this.tcp.close();
|
|
||||||
promise.then(() => {
|
|
||||||
globalThis.getCloseTcp=true
|
|
||||||
console.log(TAG,'tcpCloseSuccess')
|
|
||||||
callback()
|
|
||||||
reslove(true)
|
|
||||||
}).catch(err => {
|
|
||||||
console.log(TAG,'tcpClosefailed')
|
|
||||||
reslove(false)
|
|
||||||
});
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user