unity在协程中建立udp网络连接后iOS打包碰到的问题

由于工作需要,做了一个连接下位机热点并通信的软件,使用udp协议。其中有一个功能,就是每隔2s检测一下本地IP,如果发现IP自动切换了,就提醒用户(防止用户在没有连接热点就打开软件)。代码如下:

IEnumerator CheckIPPeriod()
    {
        IPAddress recIP = localIP;
        while (true)
        {
            //每隔checkIPPeriod时间检测一次
            yield return new WaitForSeconds(checkIPPeriod);
            localIP = GetLocalIP();//获取本地IP
            //因为和热点通信,所以要和remoteIP同一个网段
            if (localIP.ToString().Contains(remoteIP.Substring(0, remote.ToString().LastIndexOf('.') + 1)))
            {
                if (localIP.ToString() != recIP.ToString())
                {
                    CloseUdpClient();//关掉旧的
                    InitializeUdpClient();//开启新的连接
                    //发一段数据,激活通信
                    SendDataToRemoteHost(new byte[] { 0, 0, 0 }, 3);
                    warningAction?.Invoke("已连接到发动机热点", 10);
                }
            }
            else
            {
                warningAction?.Invoke("请连接发动机热点", 100);
            }
            recIP = localIP;
        }
    }

结果发现,这么做在安卓打包后没有任何问题,但是iOS打包后,程序会在建立网络连接时卡住,并且调试中提示这么一个错误:

dnssd_clientstub write_all(17) DEFUNCT

dnssd_clientstub deliver_request ERROR:write_all(17,58bytes)failed

dnssd_clientstub write_all(17) DEFUNCT

在网上怎么都找不到解决办法,后来把这个协程去掉,就没有这个错误了。虽然和热点之间的通信依旧在建立连接的时候会卡很久(大概20--30s),但后面的通信是没有任何问题的。不过仍旧有个问题没有想明白,为什么我用同样的代码,让手机和电脑连接同一个可用(有网络的)热点,手机和电脑之间的通信初始化一点问题也没有,一点也没有卡顿延迟。而和自己公司做的下位机热点通信就会卡顿如此久呢?

猜你喜欢

转载自www.cnblogs.com/BlueTargetDrone/p/11306692.html