报错信息

一开始在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
说点什么
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...