报错信息
一开始在Unity Editor下跑的很正常Socket连接,打包到Android下就开始报错:mono-io-layer-error (10013)
这个报错谷歌了一下还找不到具体原因,好多说是Url写错了或者是TcpClient的问题。
但是这些报错和我遇到的还不太一样,因为我使用了原始的Socket做的编程。
后来经过排查发现,是SocketOption有问题。具体原因可能是系统层做了限制。
只要通过SetSocketOption去设置TcpNoDelay这个选项,就必然报错
Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.NoDelay, noDelay);
然而直接设置NoDelay的属性确是正常的,可能mono翻译过来的代码实现还不太一样,AndroidApp没有权限去设置NoDealy
正确写法还是应该直接设置NoDelay属性值
完整代码
#if UNITY_ANDROID
Socket.NoDelay = noDelay;
#else
Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.NoDelay, noDelay);
#endif
声明:
本文采用
BY-NC-SA
协议进行授权,如无注明均为原创,转载请注明转自
云曦的秘密基地
本文地址: Unity Android mono-io-layer-error (10013)
本文地址: Unity Android mono-io-layer-error (10013)