本文主要是介绍unity学习(87)——断线的原因--客户端堆栈溢出1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
无论unity还是exe问题都是一样的,都是客户端一直在发123,但收不到124,退出时服务器能发126,但是客户端压根接受不到126。一下确实解决不了问题,但其实已经十分接近了!
客户端断线后就再也收不到任何包了!现在需要弄清断线的原因!
实测,当客户端都已经中断了以后,服务器还在不停的brocast124,客户端此时毛都收不到!
而且,此时broadcast中没有try-catch的,直观感觉就是session的遍历那里出了问题!!!
实际测试发现,即使两个客户端都收不到124数据包了!session的遍历依旧是双份的!session没有问题!是write返回的包出现了问题!之前的非unicode字符的问题应该也来自这里。
两边都停止时,服务器依然broadcast124!但此时客户端就是收不到124!
刨根问底,进入write函数继续查看,最后唯一可能出问题的地方就是这里了!
实际测试,发现即使断线,socket.Send还是一直不停的在发送!
根本找不到问题,感觉是socket溢出了,在服务器加个try-catch看看能抓到点什么不?实测结果抓不到任何异常!
最精彩的部分来了,此时再登录一个exe,此时之前的客户端的移动都是可以传过来的,说明session链接并没有断开。并且,动作是直接同步过来的,说明溢出应该不在服务器这边!应该就是客户端那边数据包溢出了!
还有个问题就是只能同时登录3个客户端!第四个客户端会卡在登录界面,下次再解决这个问题。
这篇关于unity学习(87)——断线的原因--客户端堆栈溢出1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!