问题描述
我遇到了这个问题,我正在使用套接字,我需要在套接字侦听器接收到它时返回一个值,这是我到目前为止所做的:
function getIP(mdns) {
let time = 0
const closeSocket = (sock) => {
sock.close()
console.log('socket closed!')
}
const checkSocket = (sock) => {
time++
if (time > 3) {
closeSocket(socket)
}
else {
setTimeout(() => checkSocket(sock),10)
}
}
let address = ''
let socket = dgram.createSocket('udp4')
socket.bind(portNum)
socket.once('listening',() => {
socket.send(bytes,bytes.length,ListeningPort,ipAddress)
checkSocket(socket)
})
socket.on('message',(msg,rinfo) => {
var msginCar = msg.map(item => String(item))
let msgBody = msg
let msgString = ''
let localMDNS
for (let i = 0; i < msgBody.length; i++) {
msgString = msgString + String.fromCharCode(msgBody[i])
}
localMDNS = msgString.substr(13,8)
if (localMDNS === mdns) {
address = rinfo.address
}
closeSocket(socket)
}
return address
}
现在你看到 socket.on 只在收到它时才给我 rinfo,所以 getIP 函数返回一个空字符串,我该如何处理这个问题?谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)