tcp修改
This commit is contained in:
parent
33a719a462
commit
3bbf35a1db
@ -1,74 +1,76 @@
|
||||
import TcpClient from './TcpClient';
|
||||
import { getSyncData} from '../service/initable'
|
||||
import { getSyncData } from '../service/initable';
|
||||
import hilog from '@ohos.hilog';
|
||||
|
||||
export async function getTCP() {
|
||||
|
||||
getSyncData('IpConfigTable').then(async (result:Array<any>)=>{
|
||||
console.log('result222',JSON.stringify(result))
|
||||
if(result.length){
|
||||
if(globalThis.TcpClient&&globalThis.getCloseTcp){
|
||||
globalThis.TcpClient.closeTcp(async ()=>{
|
||||
getSyncData('IpConfigTable').then(async (result: Array<any>) => {
|
||||
console.log('result222', JSON.stringify(result))
|
||||
if (result.length) {
|
||||
if (globalThis.TcpClient && globalThis.TcpClient.closeTcp) {
|
||||
globalThis.TcpClient.closeTcp(async () => {
|
||||
// const tcpClient: TcpClient =new TcpClient(result[0].tcplocalIp, result[0].tcplocalIpPort,result[0].tcpOppositeIp,result[0].tcpOppositePort)
|
||||
// globalThis.TcpClient = tcpClient
|
||||
setTimeout(async ()=>{
|
||||
await globalThis.TcpClient.rebindTcp(result[0].tcplocalIp, result[0].tcplocalIpPort,result[0].tcpOppositeIp,result[0].tcpOppositePort)
|
||||
setTimeout(async () => {
|
||||
await globalThis.TcpClient.rebindTcp(result[0].tcplocalIp, result[0].tcplocalIpPort, result[0].tcpOppositeIp, result[0].tcpOppositePort)
|
||||
await globalThis.TcpClient.connectTcp()
|
||||
await globalThis.TcpClient.sendMsg('1002')//1002
|
||||
globalThis.TcpClient.onError((val)=>{
|
||||
setTimeout(()=>{
|
||||
globalThis.TcpClient.sendMsg('1002')//1002
|
||||
if(val){
|
||||
await globalThis.TcpClient.sendMsg('1002') //1002
|
||||
globalThis.TcpClient.onError((val) => {
|
||||
setTimeout(() => {
|
||||
globalThis.TcpClient.sendMsg('1002') //1002
|
||||
if (val) {
|
||||
// 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)
|
||||
}
|
||||
},1000)
|
||||
}, 1000)
|
||||
})
|
||||
await globalThis.TcpClient.onMessage((val)=>{
|
||||
setTimeout(()=>{
|
||||
globalThis.TcpClient.sendMsg('1002')//1002
|
||||
if(val){
|
||||
await globalThis.TcpClient.onMessage((val) => {
|
||||
setTimeout(() => {
|
||||
globalThis.TcpClient.sendMsg('1002') //1002
|
||||
if (val) {
|
||||
// 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)
|
||||
}
|
||||
},1000)
|
||||
}, 1000)
|
||||
|
||||
})
|
||||
},2000)
|
||||
}, 2000)
|
||||
})
|
||||
|
||||
}else{
|
||||
const tcpClient: TcpClient =new TcpClient(result[0].tcplocalIp, result[0].tcplocalIpPort,result[0].tcpOppositeIp,result[0].tcpOppositePort)
|
||||
} else {
|
||||
const tcpClient: TcpClient = new TcpClient(result[0].tcplocalIp, result[0].tcplocalIpPort, result[0].tcpOppositeIp, result[0].tcpOppositePort)
|
||||
globalThis.TcpClient = tcpClient
|
||||
await globalThis.TcpClient.bindTcp()
|
||||
await globalThis.TcpClient.connectTcp()
|
||||
await globalThis.TcpClient.sendMsg('1002')//1002
|
||||
globalThis.TcpClient.onError((val)=>{
|
||||
await globalThis.TcpClient.sendMsg('1002') //1002
|
||||
globalThis.TcpClient.onError((val) => {
|
||||
hilog.info(0x0000, 'testTag', "valvalval2" + JSON.stringify(val));
|
||||
setTimeout(()=>{
|
||||
globalThis.TcpClient.sendMsg('1002')//1002
|
||||
if(val&& globalThis.udpClient?.sendMsg){
|
||||
setTimeout(() => {
|
||||
globalThis.TcpClient.sendMsg('1002') //1002
|
||||
if (val && globalThis.udpClient?.sendMsg) {
|
||||
globalThis.udpClient?.sendMsg(val)
|
||||
}
|
||||
},1000)
|
||||
}, 1000)
|
||||
})
|
||||
await globalThis.TcpClient.onMessage((val)=>{
|
||||
await globalThis.TcpClient.onMessage((val) => {
|
||||
hilog.info(0x0000, 'testTag', "valvalval2" + JSON.stringify(val));
|
||||
setTimeout(()=>{
|
||||
globalThis.TcpClient.sendMsg('1002')//1002
|
||||
if(val&& globalThis.udpClient?.sendMsg){
|
||||
setTimeout(() => {
|
||||
globalThis.TcpClient.sendMsg('1002') //1002
|
||||
if (val && globalThis.udpClient?.sendMsg) {
|
||||
globalThis.udpClient?.sendMsg(val)
|
||||
}
|
||||
},1000)
|
||||
}, 1000)
|
||||
|
||||
})
|
||||
}
|
||||
// globalThis.udpClient = new UdpClient(result[0].localIp, result[0].localIpPort,result[0].oppositeIp,result[0].oppositeIpPort)
|
||||
|
||||
}else{
|
||||
globalThis.TcpClient={}
|
||||
globalThis.TcpClient.onMessage=()=>{}
|
||||
} else {
|
||||
globalThis.TcpClient = {}
|
||||
globalThis.TcpClient.onMessage = () => {
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@ -1,9 +1,7 @@
|
||||
import socket from '@ohos.net.socket';
|
||||
import buffer from '@ohos.buffer';
|
||||
import hilog from '@ohos.hilog';
|
||||
|
||||
const TAG = 'socketTag[TcpDemo.TcpClient]'
|
||||
import prompt from '@ohos.prompt'
|
||||
import hilog from '@ohos.hilog';
|
||||
|
||||
export default class TcpClient {
|
||||
private localIp: string = ''
|
||||
@ -13,42 +11,46 @@ export default class TcpClient {
|
||||
|
||||
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.oppositeIp = tcpOppositeIp
|
||||
this.localIpPort = tcplocalIpPort
|
||||
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();
|
||||
}
|
||||
onError(callback?){
|
||||
|
||||
onError(callback?) {
|
||||
this.tcp.on('error', err => {
|
||||
console.log(TAG,'tcpOnerror', JSON.stringify(err))
|
||||
setTimeout(async ()=>{
|
||||
console.log(TAG, 'tcpOnerror', JSON.stringify(err))
|
||||
setTimeout(async () => {
|
||||
await this.bindTcp()
|
||||
await this.connectTcp()
|
||||
this.onMessage(callback)
|
||||
},2000)
|
||||
}, 2000)
|
||||
// this.closeUdp(()=>{
|
||||
// this.bindUdp()
|
||||
// })
|
||||
});
|
||||
}
|
||||
rebindTcp(localIp: string, localIpPort:string,oppositeIp: string,oppositeIpPort:string){
|
||||
return new Promise((resolve, reject)=>{
|
||||
|
||||
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 => {
|
||||
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
|
||||
globalThis.getCloseTcp = true
|
||||
hilog.info(0x0000, 'testTag', "tcpreBinderror:" + JSON.stringify(err));
|
||||
resolve(true)
|
||||
}
|
||||
console.log('testTag,rebindtestTag tcp bind success');
|
||||
globalThis.getCloseTcp=false
|
||||
globalThis.getCloseTcp = false
|
||||
resolve(false)
|
||||
|
||||
})
|
||||
@ -61,24 +63,27 @@ export default class TcpClient {
|
||||
// });
|
||||
|
||||
}
|
||||
|
||||
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 => {
|
||||
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
|
||||
globalThis.getCloseTcp = true
|
||||
hilog.info(0x0000, 'testTag', "tcpBinderror:" + JSON.stringify(err));
|
||||
resolve(true)
|
||||
return
|
||||
}
|
||||
globalThis.getCloseTcp=false
|
||||
globalThis.getCloseTcp = false
|
||||
console.log('testTag tcp bind success');
|
||||
resolve(false)
|
||||
})
|
||||
})
|
||||
console.log('localIp',this.localIp)
|
||||
console.log('localIpPort',this.localIpPort)
|
||||
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
|
||||
@ -87,10 +92,15 @@ export default class TcpClient {
|
||||
|
||||
|
||||
}
|
||||
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});
|
||||
|
||||
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({
|
||||
@ -102,18 +112,19 @@ export default class TcpClient {
|
||||
// sendBufferSize: 1000,
|
||||
// reuseAddress: true,
|
||||
// socketTimeout: 3000,
|
||||
},err => {
|
||||
}, err => {
|
||||
if (err) {
|
||||
return;
|
||||
}
|
||||
});
|
||||
globalThis.getCloseTcp=false
|
||||
globalThis.getCloseTcp = false
|
||||
resolve(true)
|
||||
}).catch(err => {
|
||||
globalThis.getCloseTcp=true
|
||||
setTimeout(()=>{
|
||||
globalThis.getCloseTcp = true
|
||||
setTimeout(() => {
|
||||
this.connectTcp()
|
||||
},2000)
|
||||
resolve(false)
|
||||
}, 2000)
|
||||
console.log('testTagconnect,error')
|
||||
|
||||
});
|
||||
@ -121,10 +132,10 @@ export default class TcpClient {
|
||||
}
|
||||
|
||||
sendMsg(msg: string) {
|
||||
console.log(TAG,'tcpSend',msg.length,msg)
|
||||
return new Promise((reslove,reject)=>{
|
||||
console.log(TAG, 'tcpSend', msg.length, msg)
|
||||
return new Promise((reslove, reject) => {
|
||||
let promise = this.tcp.send({
|
||||
data:msg
|
||||
data: msg
|
||||
});
|
||||
promise.then(() => {
|
||||
reslove(true)
|
||||
@ -136,7 +147,7 @@ export default class TcpClient {
|
||||
|
||||
onMessage(callback?) {
|
||||
this.tcp.on('message', value => {
|
||||
console.log(TAG,'Tcponmessage',value.length,value)
|
||||
console.log(TAG, 'Tcponmessage', value.length, value)
|
||||
|
||||
// console.log('messageLengt',,value.message.length))
|
||||
console.log('testTagtcpmsg')
|
||||
@ -144,31 +155,33 @@ export default class TcpClient {
|
||||
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);
|
||||
const Arraybuffer = value.message.slice(5, dataView?.byteLength);
|
||||
|
||||
callback&&callback(Arraybuffer)
|
||||
}else{
|
||||
callback&&callback('')
|
||||
callback && callback(Arraybuffer)
|
||||
} else {
|
||||
callback && callback('')
|
||||
}
|
||||
// callback(value.message)
|
||||
});
|
||||
}
|
||||
|
||||
offTcp(callback) {
|
||||
console.log(TAG,'tcpofff')
|
||||
console.log(TAG, 'tcpofff')
|
||||
|
||||
this.tcp.off('testTagofmessg', callback);
|
||||
}
|
||||
|
||||
closeTcp(callback) {
|
||||
return new Promise((reslove,reject)=>{
|
||||
console.log(TAG,'tcpClose')
|
||||
return new Promise((reslove, reject) => {
|
||||
console.log(TAG, 'tcpClose')
|
||||
let promise = this.tcp.close();
|
||||
promise.then(() => {
|
||||
globalThis.getCloseTcp=true
|
||||
console.log(TAG,'tcpCloseSuccess')
|
||||
globalThis.getCloseTcp = true
|
||||
console.log(TAG, 'tcpCloseSuccess')
|
||||
callback()
|
||||
reslove(true)
|
||||
}).catch(err => {
|
||||
console.log(TAG,'tcpClosefailed')
|
||||
console.log(TAG, 'tcpClosefailed')
|
||||
reslove(false)
|
||||
});
|
||||
})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user