使用套接字并在套接字侦听器接收到它时返回一个值

问题描述

我遇到了这个问题,我正在使用套接字,我需要在套接字侦听器接收到它时返回一个值,这是我到目前为止所做的:

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 (将#修改为@)